rootなしでpython3からリモートでpipをインストールする

rootなしでpython3からリモートでpipをインストールする

リモートホストの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

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これにより、より多くのバグや欠落しているライブラリが見つかる可能性があります。

おすすめ記事