pypa paquetes mac librerias instalar bootstrap agregar python pip

paquetes - Instalar un paquete de Python en un directorio diferente usando pip?



instalar pip en windows 10 (12)

Con pip v1.5.6 en Python v2.7.3 (GNU / Linux), la opción --root permite especificar un prefijo de instalación global, (aparentemente) independientemente de las opciones específicas del paquete. Prueba fi

$ pip install --root=/alternative/prefix/path package_name

Sé que la respuesta obvia es usar virtualenv y virtualenvwrapper, pero por varias razones no puedo / no quiero hacer eso.

Entonces, ¿cómo modifico el comando?

pip install package_name

¿Para hacer que pip instale el paquete en un lugar diferente a los site-packages predeterminados?


El interruptor de --target es lo que estás buscando:

pip install --target = d: / somewhere / other / than / the / default package_name

Pero aún debe agregar d:/somewhere/other/than/the/default a PYTHONPATH para usarlos realmente desde esa ubicación.

Actualizar pip si el interruptor de destino no está disponible:

En Linux o OS X:

pip install -U pip

En Windows (esto funciona alrededor de un problema ):

python -m pip install -U pip


En lugar de la opción --target o la opción --install-options , he encontrado que lo siguiente funciona bien (de la discusión sobre un error relacionado con esto en https://github.com/pypa/pip/issues/446 ):

PYTHONUSERBASE=/path/to/install/to pip install --user

(O configure el directorio PYTHONUSERBASE en su entorno antes de ejecutar el comando, usando export PYTHONUSERBASE=/path/to/install/to )

Esto utiliza la muy útil opción de --user , pero le dice que haga los directorios bin , lib , share y otros que esperaría con un prefijo personalizado en lugar de $HOME/.local .

Luego puede agregar esto a su PATH , PYTHONPATH y otras variables como lo haría con un directorio de instalación normal.

Tenga en cuenta que es posible que también deba especificar las opciones --upgrade y --ignore-installed si alguno de los paquetes de los cuales depende esto requiere que se instalen versiones más nuevas en el directorio PYTHONUSERBASE , para anular las versiones provistas por el sistema.

Un ejemplo completo:

PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy

..para instalar las versiones más recientes del paquete scipy y numpy en un directorio que luego puede incluir en su PYTHONPATH así (usando bash y para python 2.6 en CentOS 6 para este ejemplo):

export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH

¡Usar virtualenv sigue siendo una solución mejor y más limpia!


La instalación de un paquete de Python a menudo solo incluye algunos archivos puros de Python. Si el paquete incluye datos, scripts y / o ejecutables, estos se instalan en directorios diferentes de los archivos de Python puros.

Suponiendo que su paquete no tiene datos / scripts / ejecutables, y que desea que sus archivos de Python vayan a /python/packages/package_name (y no algún subdirectorio unos pocos niveles debajo de /python/packages como cuando usa --prefix ), puede use el comando de una sola vez:

pip install --install-option="--install-purelib=/python/packages" package_name

Si desea que todos (o la mayoría) de sus paquetes vayan allí, puede editar su ~/.pip/pip.conf para incluir:

[install] install-option=--install-purelib=/python/packages

De esa manera no puedes olvidar tener que especificarlo una y otra vez.

Todos los archivos ejecutables / datos / scripts incluidos en el paquete seguirán llegando a sus lugares predeterminados a menos que especifique opciones de instalación adicionales ( --prefix / --install-data / --install-scripts , etc., para obtener información detallada sobre la instalación personalizada opciones).


Las versiones más recientes de pip (8 o posterior) pueden usar directamente la opción --prefix :

pip install --prefix=$PREFIX_PATH package_name

donde $PREFIX_PATH es el prefijo de instalación donde se ubican las carpetas lib, bin y otras carpetas de nivel superior.


Nadie parece haber mencionado la opción -t, pero la más fácil:

pip install -t <direct directory> <package>


Para agregar al ya bueno consejo, ya que tuve un problema al instalar IPython cuando no tenía permisos de escritura en /usr/local .

pip usa distutils para hacer su instalación y este hilo discute cómo eso puede causar un problema ya que depende de la configuración de sys.prefix .

Mi problema ocurrió cuando la instalación de IPython intentó escribir en ''/ usr / local / share / man / man1'' con el permiso denegado . Como la instalación falló, no pareció escribir los archivos IPython en el directorio bin.

El uso de "--user" funcionó y los archivos se escribieron en ~ / .local. Agregar ~ / .local / bin a $ PATH significaba que podía usar "ipython" desde allí.

Sin embargo, estoy intentando instalar esto para varios usuarios y se me ha dado permiso de escritura en el directorio /usr/local/lib/python2.7 . Creé un directorio "bin" debajo y establecí directivas para los distritos:

vim ~/.pydistutils.cfg [install] install-data=/usr/local/lib/python2.7 install-scripts=/usr/local/lib/python2.7/bin

luego ( -I se usa para forzar la instalación a pesar de fallas previas / instalación local):

pip install -I ipython

Luego agregué /usr/local/lib/python2.7/bin a $PATH .

Pensé en incluir esto en caso de que alguien más tenga problemas similares en una máquina a la que no tenga acceso sudo.



Si está utilizando cerveza con python, desafortunadamente, pip / pip3 se envía con opciones muy limitadas. No tiene las opciones --install-option, --target, --user como se mencionó anteriormente.

Note sobre la instalación de pip - user
La instalación normal de pip --user está deshabilitada para Python elaborado. Esto se debe a un error en distutils, porque Homebrew escribe un distutils.cfg que establece el prefijo del paquete. Una posible solución (que coloca los scripts ejecutables en ~ / Library / Python /./ bin) es: python -m pip install --user --install-option="--prefix=" <package-name>

Usted puede encontrar esta línea muy engorroso. Sugiero utilizar pyenv para la gestión. Si estas usando

brew upgrade python python3

Irónicamente, en realidad estás degradando la funcionalidad pip.

(Publico esta respuesta, simplemente porque pip en mi Mac OSX no tiene la opción --detar, y llevo horas reparándolo)


Solo agrega un punto a la respuesta de @Ian Bicking:

El uso de la opción --user para especificar el directorio instalado también funciona si uno desea instalar algún paquete de Python en el directorio de inicio (sin el derecho de usuario de sudo) en el servidor remoto.

P.ej,

pip install --user python-memcached

El comando instalará el paquete en uno de los directorios que figuran en su PYTHONPATH.


Sugiero seguir la documentación y crear el archivo ~ / .pip / pip.conf. Observe que en la documentación faltan el directorio del encabezado especificado, lo que conduce al siguiente error:

error: install-base or install-platbase supplied, but installation scheme is incomplete

El contenido completo de trabajo del archivo conf es:

[install] install-base=$HOME install-purelib=python/lib install-platlib=python/lib.$PLAT install-scripts=python/scripts install-headers=python/include install-data=python/data

Desafortunadamente, puedo instalarlo, pero cuando intento desinstalar pip me dice que no hay tal paquete para el proceso de desinstalación ... así que algo sigue mal pero el paquete va a su ubicación predefinida.


Utilizar:

pip install --install-option="--prefix=$PREFIX_PATH" package_name

También es posible que desee utilizar --ignore-installed para forzar la reinstalación de todas las dependencias con este nuevo prefijo. Puedes usar --install-option varias veces para agregar cualquiera de las opciones que puedes usar con python setup.py install ( --prefix es probablemente lo que quieres, pero hay muchas más opciones que puedes usar).