リモートホストの1つにSSH経由でpython3をインストールしようとしています。 root アクセス権がありません。インストールは次のように行われます。
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
これにより、より多くのバグや欠落しているライブラリが見つかる可能性があります。