not mac found python bash python-3.x pip virtualenv

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.

https://virtualenv.pypa.io/en/stable/


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