¿Cómo instalar módulos python sin acceso root?

220

Estoy tomando algunas clases universitarias y me han dado una "cuenta de instrucción", que es una cuenta de la escuela en la que puedo ingresar para trabajar. Quiero ejecutar mi código computacionalmente intensivo Numpy, matplotlib, scipy en esa máquina, pero no puedo instalar estos módulos porque no soy administrador del sistema.

¿Cómo puedo hacer la instalación?

Rishi
fuente
14
Puede pasar --user o --prefix a setup.py para el paquete que está instalando para instalarlo localmente. Vea la instalación de alertnative para los módulos de Python
arunkumar

Respuestas:

306

En la mayoría de las situaciones, la mejor solución es confiar en la llamada ubicación del "sitio del usuario" (consulte la PEP para obtener más detalles) ejecutando:

pip install --user package_name

A continuación se muestra una forma más "manual" de mi respuesta original, no necesita leerla si la solución anterior funciona para usted.


Con easy_install puedes hacer:

easy_install --prefix=$HOME/local package_name

que se instalará en

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

(la carpeta 'local' es un nombre típico que usan muchas personas, pero, por supuesto, puede especificar cualquier carpeta en la que tenga permisos para escribir).

Deberá crear manualmente

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

y agréguelo a su PYTHONPATHvariable de entorno (de lo contrario, easy_install se quejará; por cierto, ejecute el comando anterior una vez para encontrar el valor correcto para XY).

Si no está utilizando easy_install, busque una opción de prefijo, la mayoría de los scripts de instalación le permiten especificar uno.

Con pip puedes usar:

pip install --install-option="--prefix=$HOME/local" package_name
tiho
fuente
1
¿Qué pasa si Python no tiene pipy está easy_installdisponible?
Girardi
La instalación fue bien (el método pip), pero la importación de package_name no funciona. ¿Necesito cambiar / agregar algunas configuraciones? ¿también dónde se copió la instalación (carpeta sabia)?
idoda
2
//, @AnotherDayAnotherRob, eso suena como una buena pregunta .
Nathan Basanese
2
Puede tener sentido actualizar la respuesta y poner las --userinstrucciones en la parte superior. :)
VasiliNovikov
1
@Girardi En caso de que haya instalado python desde src a un directorio local / my_python /, sería útil instalar pip en esta ubicación con: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python: luego puede instalar otros módulos con pip + prefijo
teng_wenxuan
51

¿Sin permisos para acceder ni instalar easy_install?

Luego, puede crear una python virtualenv( https://pypi.python.org/pypi/virtualenv ) e instalar el paquete desde este entorno virtual.

Ejecutar 4 comandos en el shell será suficiente (inserte la versión actual 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

Fuente y más información: https://virtualenv.pypa.io/en/latest/installation/

tremendows
fuente
1
Esta respuesta fue útil para mí en un sistema sin pipinstalar.
Dan Stowell
Intenté una variante para mi instalación local de Python. curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / python
Neerav
3
La fuente parece haberse movido y lo anterior no funciona fuera de la caja. https://virtualenv.pypa.io/en/latest/installation/Aunque las instrucciones similares funcionan bien :)
Andras Deak
13

Puede ejecutar easy_install para instalar paquetes de python en su directorio de inicio, incluso sin acceso de root. Hay una manera estándar de hacer esto usando site.USER_BASE, que por defecto es algo como $ HOME / .local o $ HOME / Library / Python / 2.7 / bin y se incluye por defecto en PYTHONPATH

Para hacer esto, cree un .pydistutils.cfg en su directorio de inicio:

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

Ahora puede ejecutar easy_install sin privilegios de root:

easy_install boto

Alternativamente, esto también le permite ejecutar pip sin acceso de root:

pip install boto

Esto funciona para mi.

Fuente del blog de Wesley Tanaka: http://wtanaka.com/node/8095

yusong
fuente
1
Esto funcionó para mí para instalar sin acceso de root en el servidor Linux. Gracias Pero no tengo idea de por qué funcionó. ¿Puede cualquier cuerpo dar una pista?
ChathuraG
9

Si tiene que usar un setup.pyscript distutils , hay algunas opciones de línea de comandos para forzar un destino de instalación. Ver http://docs.python.org/install/index.html#alternate-installation . Si este problema se repite, puede configurar un archivo de configuración de distutils, consulte http://docs.python.org/install/index.html#inst-config-files .

La configuración de la variable PYTHONPATH se describe en tihos post.

Rockportrocker
fuente
1
Muchas gracias. He instalado con éxito la lxmlbiblioteca usandopython <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.
6

Pregunta importante. El servidor que uso (Ubuntu 12.04) tenía easy_install3pero no pip3. Así es como instalé Pip y luego otros paquetes en mi carpeta de inicio

  1. Se le pidió al administrador que instalara el paquete de Ubuntu python3-setuptools

  2. Pip instalado

Me gusta esto:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. Agregue Pip (y otras aplicaciones de Python a la ruta)

Me gusta esto:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. Instalar paquete Python

Me gusta esto

pip3 install --user httpie

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

Yo uso JuJu que básicamente permite tener una distribución de Linux realmente pequeña (que contiene solo el administrador de paquetes) dentro de su directorio $ HOME / .juju.

Permite tener su sistema personalizado dentro del directorio de inicio accesible a través de proot y, por lo tanto, puede instalar cualquier paquete sin privilegios de root. Se ejecutará correctamente en todas las distribuciones principales de Linux, la única limitación es que JuJu puede ejecutarse en el núcleo de Linux con la versión mínima recomendada 2.6.32.

Por ejemplo, después de instalar JuJu para instalar pip, simplemente escriba lo siguiente:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip
usuario967489
fuente
1

Instalar virtualenv localmente ( fuente de instrucciones ):

Importante: inserte la versión actual (como 16.1.0 ) para XXX .
Verifique el nombre del archivo extraído e insértelo para AAAAA .

$ 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 o instalar cualquier paquete que necesite en sourcesu entorno virtual de Python env:

$ source env/bin/activate

Para instalar nuevos paquetes de python (como numpy), use:

(env)$ pip install <package>
Niklas
fuente
Esta es básicamente una versión actualizada de las instrucciones de tremendows . Sus instrucciones están desactualizadas. Mi edición fue rechazada. Por eso lo publiqué como una nueva instrucción.
Niklas