Sin entornos virtuales
pip <command> --user
cambia el alcance del comando pip actual para que funcione en la ubicación de instalación del paquete de python local de la cuenta de usuario actual, en lugar de la ubicación de instalación del paquete en todo el sistema, que es el valor predeterminado.
Esto solo importa en una máquina multiusuario. Todo lo que se instale en la ubicación del sistema será visible para todos los usuarios, por lo que la instalación en la ubicación del usuario mantendrá la instalación del paquete separada de otros usuarios (no lo verán y tendrían que instalarlo ellos mismos por separado para usarlo). Debido a que puede haber conflictos de versión, la instalación de un paquete con dependencias que necesitan otros paquetes puede causar problemas, por lo que es mejor no enviar todos los paquetes que un usuario determinado usa a la ubicación de instalación del sistema.
- Si se trata de una máquina de un solo usuario, la instalación en la
--user
ubicación es escasa o nula . Se instalará en una carpeta diferente, que puede o no necesitar agregarse a la ruta, dependiendo del paquete y de cómo se use (muchos paquetes instalan herramientas de línea de comandos que deben estar en la ruta para ejecutarse desde un shell) .
- Si se trata de una máquina multiusuario,
--user
se prefiere usar root / sudo o requerir la instalación del administrador y afectar el entorno Python de cada usuario, excepto en los casos de paquetes generales que el administrador quiere poner a disposición de todos los usuarios de manera predeterminada.
- Nota: Según los comentarios, en la mayoría de las instalaciones de Unix / Linux se ha señalado que las instalaciones del sistema deben usar el administrador de paquetes general, como
apt
, en lugar de pip
.
Con entornos virtuales
La --user
opción en un entorno venv / virtualenv activo se instalará en la ubicación de python del usuario local (igual que sin un entorno virtual).
Los paquetes se instalan en el entorno virtual de forma predeterminada, pero si lo usa --user
, lo forzará a instalarse fuera de los entornos virtuales, en el directorio de script de python de los usuarios (en Windows, esto es c:\users\<username>\appdata\roaming\python\python37\scripts
para mí con Python 3.7).
Sin embargo, no podrá acceder a un sistema o instalación de usuario desde un entorno virtual (incluso si lo usó --user
mientras estaba en un entorno virtual).
Si instala un entorno virtual con el --system-site-packages
argumento, tendrá acceso a la carpeta de script del sistema para python. Creo que esto también incluyó la carpeta de script de python del usuario, pero no estoy seguro. Sin embargo, puede haber consecuencias no deseadas por esto y no es la forma prevista de usar entornos virtuales.
Ubicación del sistema Python y las carpetas de instalación del usuario local
Puede encontrar la ubicación de la carpeta de instalación del usuario para python con python -m site --user-base
. Estoy encontrando información contradictoria en las preguntas y respuestas, la documentación y en realidad estoy usando este comando en mi PC en cuanto a cuáles son los valores predeterminados, pero están debajo del directorio de inicio del usuario ( ~
acceso directo en * nix, y c:\users\<username>
generalmente para Windows).
Otros detalles
La --user
opción no es válida para cada comando. Por ejemplo pip uninstall
, encontrará y desinstalará paquetes donde se instalaron (en la carpeta de usuario, carpeta de entorno virtual, etc.) y la --user
opción no es válida.
Las cosas instaladas con pip install --user
se instalarán en una ubicación local que solo será vista por la cuenta de usuario actual, y no requerirá acceso de root (en * nix) o acceso de administrador (en Windows).
La --user
opción modifica todos los pip
comandos que lo aceptan para ver / operar en la carpeta de instalación del usuario, por lo que si lo usa pip list --user
, solamente mostrar que los paquetes instalados con pip install --user
.
import site; print site.USER_SITE
imprimir la ubicación de instalación. Para mí lo tengo/${HOME}/.local/lib/python${PY_MAJOR}.${PY_MINOR}/site-packages
.