루트 없이 python3에서 원격으로 pip 설치

루트 없이 python3에서 원격으로 pip 설치

원격 호스트 중 하나에 SSH를 통해 python3을 설치하려고 합니다. 루트 액세스 권한이 없습니다. 설치는 다음을 통해 수행됩니다.

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
tar xvzf Python-3.4.3.tgz
./configure --prefix=$HOME/.local
make
make install

이렇게 하면 Python 3이 설치되지만 설치가 끝나면 다음 오류가 발생합니다.

File "/home/someusername/Python-3.7.0/Lib/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'

python3이 설치되었지만 pip 설치가 실패했습니다. 조사한 결과 libffi가 누락된 것 같습니다. wget을 사용하여 libffi-3.2.1을 얻은 후 설치합니다.

./configure --prefix=$HOME/.local
make
make install

다음은 설치되었음을 보여줍니다.

someusername@a2plcpnl079 [~/.local/lib]$ ls
./  ../  libffi-3.2.1/  libpython3.7m.a*  pkgconfig/  python3.7/
someusername@a2plcpnl079 [~/.local/lib]$ cd libffi-3.2.1/
someusername@a2plcpnl079 [~/.local/lib/libffi-3.2.1]$ ls
./  ../  include/
someusername@a2plcpnl079 [~/.local/lib/libffi-3.2.1]$ cd include
someusername@a2plcpnl079 [~/.local/lib/libffi-3.2.1/include]$ ls
./  ../  ffi.h  ffitarget.h
someusername@a2plcpnl079 [~/.local]$ cd lib64
someusername@a2plcpnl079 [~/.local/lib64]$ ls
./  ../  libffi.a  libffi.la*  libffi.so@  libffi.so.6@  libffi.so.6.0.4*

이제 로컬 libffi를 사용하도록 python-3.7.0의 빌드를 재구성해야 합니다. 여러 변형을 시도했지만 여전히 pip를 설치할 수 없습니다.

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
export HISTTIMEFORMAT="%d/%m/%y %T "
export PATH="$HOME/.local/bin:$PATH"
export LD_LIBRARY_PATH=$HOME/.local/lib64

다음과 같이 시도했습니다.

$ ./configure --with-system-ffi --prefix=$HOME/.local LDFLAGS="-L/home/someusername/.local/lib64" LIBS="-L/home/someusername/.local/lib"

동일한 오류가 발생하여 Python을 완전히 설치하기 위해 로컬 libffi 라이브러리를 사용하도록 Python-3.7.0 구성을 올바르게 호출하는 방법에 대한 질문이 있습니까?

답변1

pipPython 설치( 를 통해 액세스 가능)와 함께 번들로 제공되지 않아도 괜찮다면 python -m pip를 사용하여 선택을 취소할 수 있습니다 configure --without-ensurepip. 이렇게 하면 Python을 빌드할 필요가 없습니다 libffi. 설치가 완료되면 pip평소대로 Python 패키지를 설치하거나 easy_install pip, ​​다운로드하여 실행합니다.get-pip.py.

그러나 테스트되지 않은 사용자 정의 제안을 사용할 수 있습니다 libffi.

$ export LD_LIBRARY_PATH=$HOME/.local/lib64
$ export LD_RUN_PATH=$HOME/.local/lib64
$ ./configure --prefix=$HOME/.local LDFLAGS="-L$HOME/.local/lib64" CPPFLAGS="-I $HOME/.local/lib/libffi-3.2.1/include"
$ make
$ make install

선택사항: 를 실행하기 전에 make install테스트 실행을 고려하세요. make test그러면 더 많은 버그나 누락된 라이브러리가 발견될 수 있습니다.

관련 정보