python - mac - ¿Cuál es el propósito "pip install--user..."?
pip version (6)
Desde
pip install --help
:
--user Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%/Python on
Windows. (See the Python documentation for site.USER_BASE for full details.)
La documentación para site.USER_BASE es un agujero de gusano aterrador de materia interesante * NIX que no entiendo.
¿Cuál es el propósito de
--user
en inglés simple?
¿Por qué sería importante instalar el paquete en
~/.local/
?
¿Por qué no poner un ejecutable en algún lugar de mi $ PATH?
En un sistema operativo MAC, la razón para usar el indicador
--user
es asegurarse de que no dañemos las bibliotecas en las que se basa el sistema operativo.
Un enfoque
conservador
para muchos usuarios de MAC OS es evitar instalar o actualizar pip con un comando que requiere
sudo
.
Por lo tanto, esto incluye la instalación en
/usr/local/bin
...
Ref: Instalación de Python para Neovim ( https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim )
No estoy del
todo
claro por qué instalar en
/usr/local/bin
es un riesgo en un MAC dado el hecho de que el sistema solo se basa en los binarios de Python en
/Library/Frameworks/
y
/usr/bin
.
Sospecho que es porque, como se señaló anteriormente, la instalación en
/usr/local/bin
requiere
sudo
que abre la puerta a cometer un error costoso con las bibliotecas del sistema.
Por lo tanto, la instalación en
~/.local/bin
es una forma segura de evitar este riesgo.
Ref: Uso de python en una Mac ( https://docs.python.org/2/using/mac.html )
Finalmente, en la medida en que hay un beneficio de instalar paquetes en
/usr/local/bin
, me pregunto si tiene sentido cambiar el propietario del directorio de
root
a
user
.
Esto evitaría tener que usar
sudo
mientras se protege contra la realización de cambios dependientes del sistema.
* ¿Es este un valor predeterminado de seguridad una reliquia de cómo los sistemas Unix se usaban con mayor frecuencia en el pasado (como servidores)?
O, como mínimo, ¿es una buena manera de ir para los usuarios de MAC que no alojan un servidor?
* Nota: La función de Protección de integridad del sistema (SIP) de Mac también parece proteger al usuario de cambiar las bibliotecas dependientes del sistema.
- E
La mejor manera de hacerlo es instalar
virtualenv
y no requerir la confusión del
--user
.
Obtendrá más flexibilidad y no se preocupará por golpear las diferentes versiones y proyectos de Python cada vez que instale un paquete.
Otras respuestas mencionan
site.USER_SITE
como donde se colocan los paquetes de Python.
Si está buscando binarios, estos van en
{site.USER_BASE}/bin
.
Si desea agregar este directorio a la ruta de búsqueda de su shell, use:
export PATH="${PATH}:$(python3 -c ''import site; print(site.USER_BASE)'')/bin"
Sólo una advertencia:
De acuerdo con
este problema
,
--user
actualmente no es válido dentro del
pip
un entorno virtual, ya que la ubicación de un usuario realmente no tiene sentido para un entorno virtual.
Por lo tanto, no use
pip install --user some_pkg
dentro de un entorno virtual
, de lo contrario, el
pip
del entorno virtual se confundirá.
Vea
esta respuesta
para más detalles.
pip por defecto instala paquetes de Python en un directorio del sistema (como
/usr/local/lib/python3.4
).
Esto requiere acceso de root.
--user
hace paquetes de instalación de pip en su directorio de inicio, que no requiere ningún privilegio especial.
--user
instala en el
site.USER_SITE
.
site.USER_SITE
.
Para mi caso, fue
/Users/.../Library/Python/2.7/bin
.
Así que he agregado eso a mi RUTA (en el archivo
~/.bash_profile
):
export PATH=$PATH:/Users/.../Library/Python/2.7/bin