Instalação remota do pip do python3 sem raiz

4

Estou tentando instalar o python3 para uma hospedagem remota em ssh. Eu não tenho acesso root. A instalação foi feita com:

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

Isso instala o Python 3, mas no final da instalação esse erro ocorre:

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 está instalado, mas a instalação do pip falhou. Depois de algumas pesquisas, parece que a libffi está faltando. Depois de usar o wget para obter o libffi-3.2.1, ele é instalado com:

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

Isso mostra que está instalado:

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*

Agora é necessário reconfigurar a compilação do python-3.7.0 para que ele use a libffi local. Eu tentei várias variações, mas ainda não consigo instalar 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

Algo como isso foi tentado:

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

O mesmo erro ocorreu, então a questão é como invocar corretamente o Python-3.7.0 configure para usar a biblioteca libffi local para instalar completamente o python?

    
por alex_mike 23.07.2018 / 16:31

1 resposta

4

Se você não tiver pip empacotado com a instalação do Python (aquele que pode ser acessado via python -m pip ), você poderá desmarcá-lo com configure --without-ensurepip . Ao fazer isso, você não precisará do libffi para construir o Python. Após a instalação, instale pip como um pacote normal do python, por exemplo. com easy_install pip , ou fazendo o download e executando get-pip.py .

No entanto, você deve poder criar usando um libffi personalizado. Minha proposta, não testada:

$ 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

Opcional: antes de executar make install , considere a execução dos testes: make test , isso pode revelar mais erros ou perder bibliotecas.

    
por 23.07.2018 / 22:54