¿Cómo puedo usar Homebrew para instalar Python 2 y 3 en Mac?

146

Necesito poder alternar entre Python 2 y 3. ¿Cómo hago eso usando Homebrew ya que no quiero meterme en el camino y meterme en problemas? En este momento tengo 2.7 instalado a través de Homebrew.

MostafaMV
fuente
Es posible que desee cambiar la pregunta para eliminar la referencia homebrew, ya que no es necesariamente un requisito para lograr su objetivo (consulte mi respuesta a continuación, por ejemplo stackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

Respuestas:

288

Yo usaría pyenv. Puedes instalarlo:

$ brew install pyenv

Para habilitar pyenv en su shell Bash, debe ejecutar:

$ eval "$(pyenv init -)"

Para hacer esto automáticamente para Bash al inicio, agregue esa línea a su ~/.bash_profile. 1

Uso:

Una vez que haya instalado pyenv y lo haya activado, puede instalar diferentes versiones de python y elegir cuál puede usar. Ejemplo:

$ pyenv install 2.7.5

Puede verificar las versiones que ha instalado con:

$ pyenv versions

Y puede cambiar entre versiones de Python con el comando:

$ pyenv global 3.3.1

También puede establecer una versión de Python para el directorio actual con:

$ pyenv local 3.5.2

Puede verificar ejecutando python --version:

$ python --version
Python 3.5.2

1 Homebrew solía indicarte que hagas esto al instalar pyenv, pero el mensaje fue eliminado . Para Zsh y otros proyectiles, los pasos precisos pueden ser diferentes.

moliware
fuente
Esta es la solución más simple. Actualmente uso esto para cambiar entre Python 3 y 2.7.x
Naz Mir
3
Si ya instalé python 2.7 a través de homebrew , ¿hay algo que deba encargarme de usar pyenv ? ¿Puedo instalar otro python 2.7 a través de pyenv ?
Drake Guan
3
Sí, puede instalar otro python 2.7 a través de pyenv. Instalará esa pitón en $ PYENV_ROOT / versiones. El otro python 2.7 instalado a través de homebrew puede aparecer como "sistema" cuando ejecuta "versiones pyenv".
moliware
55
Tuve que agregar eval "$(pyenv init -)"a mi .profile / .zshrc para que pyenv funcionara.
Rohmer
55
@ilciavo, puede que tenga que agregar eval "$(pyenv init -)"a su ~ / .bash_profile
Jojanzing
77

Puede tener ambas versiones instaladas al mismo tiempo.

Para Homebrew> = 1.5.0:

Desde el 1 de marzo de 2018, la pythonfórmula se actualizará a Python 3.x, mientras python@2que se agregará una nueva fórmula para Python 2.7, específicamente.

Vea el anuncio de cambios aquí o el documento final sobre el uso de Homebrew para Python aquí .

Para Homebrew más viejo:

Para Python 2.x:

brew install python

Para Python 3.x:

brew install python3

Ahora, tendrá ambas versiones instaladas en su máquina. Cuando quiera usar la versión 2, use el pythonejecutable. Cuando desee usar la versión 3, use el python3ejecutable.

Lenin Raj Rajasekaran
fuente
la pregunta es sobre el uso de ambos
meduz
¡gracias por la actualización! Seguí una ruta similar pero tuve problemas para configurar PYTHONPATHcada cambio ... ¿alguna idea? Además de eso, pyenves genial.
Meduz
9
Además, tenga en cuenta que tener python2 y python3 uno al lado del otro, que python apunta a python2 y python3 apunta a python3 como se esperaba. Sin embargo, un gran problema es que pip no apunta a pip2 como es de esperar. En realidad apunta a pip3 (como pip3 obviamente). Para usar pip2, explícitamente use pip2. Un poco inconsistente tener el sufijo no numérico para python apunta a 2 pero el sufijo no numérico para pip apunta a 3.
JD
55
Esto arruina ejecutables comunes como pip. python3 sobrescribirá python2 pip en este caso y ese será el comando "pip" predeterminado
kissgyorgy
1
En respuesta al comentario de @ kissgyorgy: tuve ese problema, el último comentario sobre este problema lo resolvió para mí github.com/Homebrew/legacy-homebrew/issues/50607 , ejecutándolo python3 -m pip install -U --force-reinstall pipy python -m pip install -U --force-reinstall pipvolviendo a pipreferirme a Python 2 pip.
Harry
11

Actualmente, Homebrew proporciona dos fórmulas diferentes para Python 2 y 3. brew install pythoninstala python3 e brew install python@2instala python2. Más detalles en documentos Homebrew:

https://docs.brew.sh/Homebrew-and-Python

Si actualmente tiene 2.x instalado a través de Homebrew, Homebrew le dará un mensaje como:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

Si tu corres:

brew upgrade python

deberías poder hacer:

python --version

y

python3 --version

Para ver qué versiones de Python 2.xy 3.x están instaladas.

Guilherme Garnier
fuente
6

Alternativamente, probablemente pueda ingresar "python3" para ejecutar su versión más reciente de python3.xy "python" o "python2" para ejecutar la última versión 2.x instalada.

Fred Mitchell
fuente
4

Hay formas de usar ambos, pero la solución más simple hoy en día es usar pyenv . pyenv permite cambiar fácilmente entre versiones. Esto es lo que hice para configurar:

PASO 1:

Elimina todas las pitones de tu mac

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

Eliminar lo siguiente de ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

y también lo siguiente de ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

PASO 2 :

Instale pyenv y las versiones de python que necesita

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

PASO 3 :

añadir pyenv inita bash_profileobashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

PASO 4 :

Comprueba lo que se instaló

pyenv versions
  • sistema (establecido por /Users/ishandutta2007/.pyenv/version)

    2.7

    3.7.0

PASO 5:

Elige un valor predeterminado

pyenv global 3.7.0

Cuando un proyecto necesita una versión anterior, simplemente vaya a su carpeta raíz y ejecute

pyenv local 2.7
ishandutta2007
fuente
1

Use asdf !

Balada de asdf

Había una vez un lenguaje de programación.
Había muchas versiones del mismo.
Entonces la gente escribió un administrador de
versiones para cambiar de versión para proyectos.
Diferente, antiguo, nuevo.

Luego vinieron más lenguajes de programación.
Entonces vinieron más administradores de versiones
y muchos comandos para ellos.

Instalé muchos de ellos
, aprendí muchos comandos

Entonces dije, solo un administrador de versiones más
que escribiré

Entonces, llegó otro administrador de
versiones asdf manager de versiones : https://github.com/asdf-vm/asdf

Un administrador de versiones tan ampliable
para que cualquiera pueda crear un complemento
Para admitir su idioma favorito
No más instalar más administradores de versiones
O aprender más comandos

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins

Matt Schlobohm
fuente
Me parece que estas no son herramientas de la competencia, sino la misma herramienta, implementada una vez (y a veces más de una vez) por idioma. Algo así como por qué necesitamos algo como el LSP también, en mi humilde opinión. microsoft.github.io/language-server-protocol/overview
Matt Schlobohm
1

Pensé que tenía el mismo requisito: moverme entre las versiones de Python, pero logré todo lo que necesitaba con solo Python3.6 construyendo desde la fuente en lugar de usar homebrew.

git clone https://git.<theThingYouWantToInstall>

Dependiendo del repositorio, verifique si ya hay un archivo MAKE configurado para esta opción.

rustyMagnet
fuente
-3

De acuerdo, estaba luchando con mi instalación de Python3, porque no tenía pip3

sudo pip3 command not found

y así lo hice

brew uninstall --force --ignore-dependencies python3

e instalé el Python 3.6.2 regular de la distribución oficial y luego tuve pip3 y todos los componentes estaban bien.

Vladimir Stazhilov
fuente
OP pregunta sobre la instalación de ambos.
Ajeet Ganga