Homebrew: ¿Retroceder de Python 3.7 a Python 3.6.5.x?

52

Un brew upgrade actualizó mi sistema Python a Python 3.7. Desafortunadamente, Python 3.7 rompe otro software que necesito usar (incluido, entre otros, Ansible). Me imagino que estos problemas se resolverán en la próxima semana, pero mientras tanto, me gustaría volver a Python 3.6.5.x

Un brew info python muestra que las versiones anteriores aún están instaladas y no se han eliminado:

➜ brew info python
python: stable 3.7.0 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.6.5 (4,825 files, 100.8MB)
  Poured from bottle on 2018-03-31 at 20:21:57
/usr/local/Cellar/python/3.6.5_1 (4,788 files, 99.9MB)
  Poured from bottle on 2018-06-20 at 16:00:26
/usr/local/Cellar/python/3.7.0 (4,869 files, 103.3MB)
  Poured from bottle on 2018-07-01 at 19:30:37
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb

Los diversos comandos brew link y brew install sugeridos por otros sitios no parecen funcionar:

➜ brew link [email protected]
Error: No such keg: /usr/local/Cellar/[email protected]
➜ brew link [email protected]_1
Error: No such keg: /usr/local/Cellar/[email protected]_1
➜ brew install [email protected]
Error: No available formula with the name "[email protected]" 
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
    
pregunta clay 02.07.2018 - 18:36

5 respuestas

59

Si todavía tiene las versiones anteriores disponibles, solo puede usar

brew switch python 3.6.5_1
    
respondido por el knilsilooc 02.07.2018 - 19:44
42

Si no tiene una versión anterior para cambiar, puede instalar desde la fórmula anterior de esta manera:

$ brew unlink python
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
    
respondido por el rinat.io 31.07.2018 - 20:34
3

Respuesta corta

Para recuperar una versión de Python instalada previamente:

brew switch python 3.x.x_x
# Ex. 3.6.5_1

Use brew info python para ver lo que ha instalado anteriormente

Para realizar una instalación limpia de Python 3.6.5 use:

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

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: Puedes encontrar respuestas desactualizadas 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 secundaria como 3.6.

Solución:

Con brew , puedes instalar un paquete usando 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

enlace

Python > 3.6.5

En el enlace anterior no encontrará una fórmula para una versión de Python anterior 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.

    
respondido por el ePi272314 31.10.2018 - 18:30
1

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
brew install vim --with-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
    
respondido por el Steven Peters 10.10.2018 - 02:11
-1

No soy un experto en esto, pero tuve el mismo problema. Esto es lo que funcionó para mí: $ brew unlink python $ brew uninstall --ignore-dependencies python3 $ brew uninstall pipenv then from https://www.python.org/downloads/ installed python 3.6.6 $ brew install pipenv

    
respondido por el Becky 08.10.2018 - 15:56

Lea otras preguntas en las etiquetas