¿Easy_install o pip como usuario limitado?

Distutils de Python estándar proporciona una opción ‘–user’ que me permite instalar un paquete como usuario limitado, como esto:

python setup.py install --user 

¿Hay un equivalente para easy_install y pip ?

Para pip , vea Instalaciones de usuario para más detalles, pero básicamente, es justo lo que esperaría:

 pip install --user Foo 

Es un poco más complicado para easy_install . Como señala Ned Deily, si puede confiar en distribute lugar de setuptools de setuptools , y en la versión 0.6.11 o posterior, puede usar --user la misma manera que pip . Pero si necesita trabajar con setuptools , o una distribute más antigua … vea las Ubicaciones de instalación personalizadas para obtener más detalles (y tenga en cuenta que explica cómo crear y configurar paquetes de sitios de usuarios, no solo cómo instalarlos allí, ya que debe poder funcionar con Python 2.5 y versiones anteriores, que no lo hicieron de forma predeterminada). Pero, con suerte, solo está utilizando easy_install para los pocos paquetes que no se pueden pipetear, por lo que no es un gran problema.

Sin embargo, al menos vale la pena considerar si virtualenv es un mejor ajuste para lo que sea que esté tratando de lograr que un directorio de sitios de usuarios. pip y virtualenv funcionan muy bien juntos, como explican los documentos .

De los documentos de easy_install

http://peak.telecommunity.com/DevCenter/EasyInstall#downloading-and-installing-a-package

–install-dir = DIR, -d DIR Establece el directorio de instalación. Depende de usted asegurarse de que este directorio se encuentre en sys.path en el tiempo de ejecución y de usar pkg_resources.require () para habilitar los paquetes instalados que necesita.

(Nuevo en 0.4a2) Si esta opción no se especifica directamente en la línea de comandos o en un archivo de configuración de distutils, se utiliza la ubicación de instalación predeterminada de distutils. Normalmente, este sería el directorio de paquetes de sitio, pero si está usando archivos de configuración de distutils, configurando elementos como prefix o install_lib, entonces esas configuraciones se tienen en cuenta al calcular el directorio de instalación predeterminado, como es la opción –prefix.

–prefix = DIR (Nuevo en 0.6a10) Use el directorio especificado como base para calcular la instalación predeterminada y los directorios de script. En Windows, los directorios predeterminados resultantes serán prefix \ Lib \ site-packages y prefix \ Scripts, mientras que en otras plataformas los predeterminados serán prefix / lib / python2.X / site-packages (con la versión apropiada sustituida) para bibliotecas y prefijo / bin para scripts.

Tenga en cuenta que la opción –prefix solo establece los directorios predeterminados de instalación y script, y no anula los establecidos en la línea de comandos o en un archivo de configuración.

También puede especificarlos usando un archivo ~ / .pydistutils.cfg

http://peak.telecommunity.com/DevCenter/EasyInstall#mac-os-x-user-installation

Antes de instalar EasyInstall / setuptools, simplemente cree un archivo ~ / .pydistutils.cfg con el siguiente contenido (o agregue esto al contenido existente):

[install] install_lib = ~ / Library / Python / $ py_version_short / site-packages install_scripts = ~ / bin Esto le dirá a los distritos y EasyInstall que siempre instalen paquetes en su directorio personal de paquetes de sitios y scripts para ~ / bin. (Nota: ¡no reemplace $ py_version_short con una versión real de Python en el archivo de configuración! Los límites sustituyen el valor correcto en tiempo de ejecución, de modo que el archivo de configuración anterior debería funcionar correctamente sin importar qué versión de Python use, ahora o en el futuro .)

Una vez que haya hecho esto, puede seguir las instrucciones de instalación normales y usar easy_install sin ninguna otra opción o paso especial.

(Sin embargo, tenga en cuenta que ~ / bin no se encuentra en el PATH predeterminado, por lo que es posible que deba hacer referencia a los scripts por su ubicación completa. Es posible que desee modificar su script de inicio de shell (probablemente .bashrc o .profile) o su ~ / .MacOSX / environment.plist para incluir ~ / bin en su PATH.

Necesitaba hacer lo mismo con mi docker e implementarlo en AWS Elastic Beanstalk.

El problema es que pip y easy_install (llamados por python setup.py) interpretan el parámetro --user de manera diferente.

  • pip install --user PackageName instalará la variable de entorno PackageName to $PYTHONUSERBASE .
  • python setup.py develop --user ignorará la variable $PYTHONUSERBASE y siempre la instalará en la carpeta ~/.local/lib/python/site-packages

La única forma que encontré para que estas dos carpetas funcionen juntas es eliminar ~/.local/lib/python/site-packages y crear un enlace a su $PYTHONUSERBASE

PD: Tenga cuidado con el siguiente, es posible que deba volver a instalar todas las dependencias locales de Python. Recomiendo usarlo solo en la ventana acoplable o en cualquier otro entorno virtual

 # !!! Be sure you have configured $PYTHONUSERBASE environment variable rm -r ~/.local/lib/python2.7/site-packages ln -s $PYTHONUSERBASE/lib/python2.7/site-packages ~/.local/lib/python2.7/site-packages 

Ahora pip y python setup.py devel –user se instalarán en la misma carpeta