¿Cómo (y debo) poner una ruta a python instalado por el usuario antes de python instalado por el sistema?

Tengo una instalación separada de Python 3.*, pero la primera ruta de Python en mi $PATHvariable es la ruta a Python instalado en el sistema. ¿Es así como debería ser?

He agregado la ruta a Python instalado por el usuario usando https://www.architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.Uydjga1dXDg , y se abrió al final de $PATH.

¿Entiendo correctamente que, en la situación actual, cuando ejecuto pip, brewetc. en python3 desde bash, los cambios se aplicarán a Python instalado en el sistema?

La solución que tengo hasta ahora es ejecutar export PATH=/usr/local/bin:/usr/local/sbin:$PATHcada vez que quiero instalar o actualizar python, pero no es lo ideal.

NB: opté por pyenvla solución sugerida por @bermudalocket. Este tutorial de pyenv fue muy útil.

ingrese la descripción de la imagen aquí

Respuestas (2)

Puede lograr esto agregando

export PATH="/path/to/python:"$PATH

a tu ~/.zshrc(o ~/.bash_profilesi no estás en Catalina).

Me gustaría proponer una alternativa y sugerir pyenv, disponible a través de Homebrew. Puede configurar una versión específica de Python para que sea "global" (es decir, predeterminada en todas partes) y/o "local" (es decir, usar esa versión solo en un directorio específico).

P.ej:

brew install pyenv
pyenv global 2.7.16
cd ~/myProjects/MyProject
pyenv local 3.7.6

Si tuviera que usar Python, ~/myProjects/MyProjectse establecerá de forma predeterminada en 3.7.6, y en cualquier otro lugar 2.7.16:

cd ~/some/other/directory
python --version
>> Python 2.7.16

cd ~/myProjects/MyProject
python --version
>> Python 3.7.6

https://github.com/pyenv/pyenv#homebrew-on-macos

¡Gracias! ¿Sabría si configurarlo global o local (¿en algunos directorios?) afectaría el funcionamiento del Python del sistema?
Esa es la belleza de esto. Si corres pyenv versionsa ver una lista de versiones disponibles, una es system. Esto significa que puede ejecutar <pyenv global/local> system. Luego, si está en un directorio que usa la versión del sistema, cualquier interacción que tenga con python será con el sistema python.
Agregue manuales de usuario a las respuestas en los casos en que uno no deba incluir un conjunto completo de instrucciones. @bermudalocket
@ankii, ¿podría dirigirme a la sección del Centro de ayuda donde se establece este requisito? No veo nada al respecto aquí . Gracias.
Sí, no hay una definición estricta de la mejor respuesta, pero póngase en el lugar de OP y vea si la respuesta está completa en sí misma. ¿Sería capaz de contrarrestar cualquier problema futuro que pudieran encontrar? No. Hicieron otra pregunta, que tiene respuestas en los documentos. meta.stackoverflow.com/questions/393571 meta.stackoverflow.com/a/260744/10063119 En caso de que se pregunte por qué las cosas de SO son aplicables aquí, apple.meta.stackexchange.com/a/2509/313842 esto es muy adecuado también. Tenga en cuenta mi uso de "... poniendo un conjunto completo de instrucciones ... "

Instalé Python 3.8 para macOS usando el instalador de python.org, no homebrew, que también está instalado en mi Mac pero rara vez se usa. Creo que el instalador de python.org agregó automáticamente las primeras tres líneas a continuación a mi ~/.bash_profile.

Con esos, cualquier cambio que haga usando pip3parece afectar solo a 3.8, mientras que los realizados a través de pipparecen afectar solo a 2.7 (que creo que viene instalado con macOS). Debido a que no utilicé homebrew al instalar Python 3.8 (o 2.7), asumo que no es relevante para ninguna de las versiones de Python en mi caso. Espero que esto ayude.

# Setting PATH for Python 3.8
PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"
export PATH

# Setting PATH for Python 2.7
# I believe the two lines below were already in the file before the above were added
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH