원격 호스트 중 하나에 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
pip
Python 설치( 를 통해 액세스 가능)와 함께 번들로 제공되지 않아도 괜찮다면 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
그러면 더 많은 버그나 누락된 라이브러리가 발견될 수 있습니다.