Como instalar módulos python sem acesso root?

220

Estou participando de algumas aulas na universidade e recebi uma 'conta instrucional', que é uma conta da escola na qual posso fazer o trabalho. Desejo executar meu código numpy, matplotlib, scipy intensivamente computacional nessa máquina, mas não consigo instalar esses módulos porque não sou administrador de sistema.

Como posso fazer a instalação?

Rishi
fonte
14
Você pode passar --user ou --prefix para setup.py para o pacote que está instalando para instalá-lo localmente. Veja a instalação alertnative para módulos Python
arunkumar

Respostas:

306

Na maioria das situações, a melhor solução é confiar no local chamado "site do usuário" (consulte o PEP para obter detalhes) executando:

pip install --user package_name

Abaixo está uma maneira mais "manual" da minha resposta original, você não precisa lê-la se a solução acima funcionar para você.


Com o easy_install, você pode:

easy_install --prefix=$HOME/local package_name

que será instalado no

$HOME/local/lib/pythonX.Y/site-packages

(a pasta 'local' é um nome típico que muitas pessoas usam, mas é claro que você pode especificar qualquer pasta na qual tenha permissão para gravar).

Você precisará criar manualmente

$HOME/local/lib/pythonX.Y/site-packages

e adicione-o à sua PYTHONPATHvariável de ambiente (caso contrário, o easy_install irá reclamar - execute o comando acima uma vez para encontrar o valor correto para XY).

Se você não estiver usando easy_install, procure uma opção de prefixo, a maioria dos scripts de instalação permite especificar um.

Com o pip, você pode usar:

pip install --install-option="--prefix=$HOME/local" package_name
tiho
fonte
1
e se o python não tiver pipe easy_installdisponível?
Girardi
A instalação correu bem (o método pip), mas a importação do package_name não está funcionando. Preciso alterar / adicionar algumas configurações? Também para onde a instalação foi copiada (pasta)?
Idoda 03/09
2
//, @AnotherDayAnotherRob, parece uma boa pergunta .
Nathan Basanese
2
Pode fazer sentido para atualizar a resposta e colocar --userinstruções no topo :).
VasiliNovikov
1
@Girardi Caso você tenha instalado o python do src em um diretório local / my_python /, seria útil instalar o pip neste local com: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - então você pode instalar outros módulos com pip + prefixo
teng_wenxuan
51

Sem permissões para acessar ou instalar easy_install?

Em seguida, você pode criar um python virtualenv( https://pypi.python.org/pypi/virtualenv ) e instalar o pacote nesse ambiente virtual.

A execução de 4 comandos no shell será suficiente (insira a versão atual como 16.1.0 para XXX):

$ curl --location --output virtualenv-X.X.X.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xvfz virtualenv-X.X.X.tar.gz
$ python pypa-virtualenv-YYYYYY/src/virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install package_name

Fonte e mais informações: https://virtualenv.pypa.io/en/latest/installation/

tremendows
fonte
1
Esta resposta foi útil para mim em um sistema sem o pipinstalado.
Dan Stowell 02/02
Eu tentei uma variante para minha instalação python local. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / python
Neerav
3
A fonte parece ter se movido e o acima não funciona imediatamente. As instruções semelhantes em https://virtualenv.pypa.io/en/latest/installation/belo trabalho embora :)
Andras Deak
13

Você pode executar o easy_install para instalar pacotes python em seu diretório pessoal, mesmo sem acesso root. Existe uma maneira padrão de fazer isso usando site.USER_BASE, cujo padrão é algo como $ HOME / .local ou $ HOME / Library / Python / 2.7 / bin e é incluído por padrão no PYTHONPATH

Para fazer isso, crie um .pydistutils.cfg no diretório inicial:

cat > $HOME/.pydistutils.cfg <<EOF
[install]
user=1
EOF

Agora você pode executar o easy_install sem privilégios de root:

easy_install boto

Como alternativa, isso também permite executar o pip sem acesso root:

pip install boto

Isso funciona para mim.

Fonte do blog de Wesley Tanaka: http://wtanaka.com/node/8095

yusong
fonte
1
Isso funcionou para eu instalar sem acesso root no servidor linux. Obrigado Mas eu não tenho idéia do por que funcionou. Alguém pode dar uma dica?
precisa saber é o seguinte
9

Se você precisar usar um setup.pyscript distutils , existem algumas opções de linha de comando para forçar um destino de instalação. Consulte http://docs.python.org/install/index.html#alternate-installation . Se esse problema persistir, você poderá configurar um arquivo de configuração do distutils, consulte http://docs.python.org/install/index.html#inst-config-files .

A configuração da variável PYTHONPATH é descrita nesse post.

rocksportrocker
fonte
1
Muito obrigado. Instalei com sucesso a lxmlbiblioteca usandopython <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.
6

Questão importante. O servidor que eu uso (Ubuntu 12.04) tinha easy_install3mas não pip3. Foi assim que eu instalei o Pip e outros pacotes na minha pasta pessoal

  1. Pediu ao administrador para instalar o pacote Ubuntu python3-setuptools

  2. Pip instalado

Como isso:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Adicione Pip (e outros aplicativos Python ao caminho)

Como isso:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Instale o pacote Python

como isso

pip3 install --user httpie

# test httpie package
http httpbin.org
Coronel Panic
fonte
4

Eu uso o JuJu, que basicamente permite uma distribuição linux realmente pequena (contendo apenas o gerenciador de pacotes) dentro do diretório $ HOME / .juju.

Ele permite que seu sistema personalizado dentro do diretório inicial seja acessível via proot e, portanto, você pode instalar quaisquer pacotes sem privilégios de root. Ele funcionará corretamente em todas as principais distribuições Linux, a única limitação é que o JuJu pode ser executado no kernel Linux com a versão mínima recomendada 2.6.32.

Por exemplo, após a instalação do JuJu para instalar o pip, digite o seguinte:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip
user967489
fonte
1

Instale o virtualenv localmente ( fonte de instruções ):

Importante: Insira a versão atual (como 16.1.0 ) para XXX .
Verifique o nome do arquivo extraído e insira-o em AAAA .

$ curl -L -o virtualenv.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xfz virtualenv.tar.gz
$ python pypa-virtualenv-YYYYY/src/virtualenv.py env

Antes de poder usar ou instalar qualquer pacote, você precisa no sourceseu ambiente virtual Python env:

$ source env/bin/activate

Para instalar novos pacotes python (como numpy), use:

(env)$ pip install <package>
Niklas
fonte
Esta é basicamente uma versão atualizada das instruções do tremendows . Suas instruções estão desatualizadas. Minha edição foi rejeitada. Por isso, publiquei como uma nova instrução.
Niklas