descargar - ¿Cómo puedo instalar una versión anterior de Python 3 en macOS utilizando homebrew?
macos python3 (5)
¿Cómo puedo instalar una versión anterior de Python 3 en macOS utilizando brew?
Con el comando
brew install python
obtuve la última versión de Python 3 (actualmente v3.7.0), pero quiero la última versión de Python 3.6 (actualmente 3.6.5).
He leído acerca de otro paquete
pyenv
que puede ayudar a manejar diferentes instalaciones de python, pero esta solución no es adecuada para mí.
Respuesta corta
Para hacer una instalación limpia de Python 3.6.5 use:
brew unlink python # ONLY if you have installed (with brew) another version of python 3
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Si prefiere recuperar una versión previamente instalada, entonces:
brew info python # To see what you have previously installed
brew switch python 3.x.x_x # Ex. 3.6.5_1
Respuesta larga
Hay dos fórmulas para instalar Python con Homebrew:
python@2
y
python
.
El primero es para Python 2 y el segundo para Python 3.
Nota:
puede encontrar respuestas obsoletas en la web donde se menciona
python3
como el nombre de la fórmula para instalar Python versión 3. ¡Ahora es solo
python
!
De forma predeterminada, con estas fórmulas puede instalar la última versión de la versión principal correspondiente de Python. Por lo tanto, no puede instalar directamente una versión menor como 3.6.
Solución
Con
brew
, puede instalar un paquete utilizando la dirección de la fórmula, por ejemplo, en un repositorio de git.
brew install https://the/address/to/the/formula/FORMULA_NAME.rb
O específicamente para Python 3
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb
La dirección que debe especificar es la dirección a la última confirmación de la fórmula (python.rb) para la versión deseada. Puede encontrar el identificador de commint mirando el historial de homebrew-core / Formula / python.rb
https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb
Python> 3.6.5
En el enlace anterior no encontrará una fórmula para una versión de Python superior a 3.6.5. Después de que los mantenedores de ese repositorio (oficial) lanzaron Python 3.7, solo envían actualizaciones a la receta de Python 3.7.
Como se explicó anteriormente, con Homebrew solo tienes Python 2 (python @ 2) y Python 3 (python), no hay una fórmula explícita para Python 3.6 .
Aunque esas actualizaciones menores son en su mayoría irrelevantes en la mayoría de los casos y para la mayoría de los usuarios, buscaré si alguien ha hecho una fórmula explícita para 3.6.
Como actualización, al hacer
brew unlink python # If you have installed (with brew) another version of python
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Usted puede encontrar
Error: python contains a recursive dependency on itself:
python depends on sphinx-doc
sphinx-doc depends on python
Para evitarlo, agregue el argumento
--ignore-dependencies
a brew install.
brew unlink python # If you have installed (with brew) another version of python
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Intenté todas las respuestas anteriores para instalar Python 3.4.4. La instalación de python funcionó, pero PIP no se instalaría y no pude hacer nada para que funcionara. Estaba usando Mac OSX Mojave, lo que causa algunos problemas con zlib, openssl.
Qué no hacer:
- Intente evitar el uso de Homebrew para la versión anterior dada por la fórmula Python o Python3 .
- No trates de compilar Python
Solución:
- Descargue el instalador de macOS de 64 bits o el instalador de macOS de 64 bits / 32 bits : https://www.python.org/downloads/release/python-365/
- En el paso anterior, se descargará Python 3.6.5 , si, por ejemplo, desea descargar Python 3.4.4 , reemplace en la url anterior python-365 por python-344
- Descargar haga clic en el archivo que descargó, se abrirá un instalador de GUI
- Si descargó python-365 , después de la instalación, para iniciar esta versión de python, escribirá en su terminal python365 , lo mismo para pip, será pip365
ps: no tienes que desinstalar la otra versión de Python en tu sistema.
Lo que hice fue primero instalé python 3.7.
brew install python3
brew unlink python
Luego instalé Python 3.6.5 usando el enlace anterior.
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb --ignore-dependencies
Después de eso ejecuté
brew link --overwrite python
.
Ahora tengo todos los pitones en el sistema para crear los entornos virtuales.
mian@tdowrick2~ $ python --version
Python 2.7.10
mian@tdowrick2~ $ python3.7 --version
Python 3.7.1
mian@tdowrick2~ $ python3.6 --version
Python 3.6.5
Para crear Python 3.7 entorno virtual.
mian@tdowrick2~ $ virtualenv -p python3.7 env
Already using interpreter /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
Using base prefix ''/Library/Frameworks/Python.framework/Versions/3.7''
New python executable in /Users/mian/env/bin/python3.7
Also creating executable in /Users/mian/env/bin/python
Installing setuptools, pip, wheel...
done.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.7.1
(env) mian@tdowrick2~ $ deactivate
Para crear un entorno virtual Python 3.6.
mian@tdowrick2~ $ virtualenv -p python3.6 env
Running virtualenv with interpreter /usr/local/bin/python3.6
Using base prefix ''/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6''
New python executable in /Users/mian/env/bin/python3.6
Not overwriting existing python script /Users/mian/env/bin/python (you must use /Users/mian/env/bin/python3.6)
Installing setuptools, pip, wheel...
done.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.6.5
(env) mian@tdowrick2~ $
Para resolver esto con
homebrew
, puedes volver temporalmente a
homebrew-core
y configurar la variable
HOMEBREW_NO_AUTO_UPDATE
para mantenerla en su lugar:
cd `brew --repo homebrew/core`
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python
No recomiendo la retroactividad permanente de homebrew-core, ya que perderá los parches de seguridad, pero es útil para realizar pruebas.
También puedes extraer versiones antiguas de fórmulas caseras en tu propio tap (tap_owner / tap_name) usando el comando
brew extract
:
brew extract python tap_owner/tap_name --version=3.6.5