A brew upgrade
actualizado mi sistema Python a Python 3.7. Desafortunadamente, Python 3.7 rompe otro software que necesito usar (incluidos, entre otros, Ansible). Me imagino que estos problemas se resolverán en la próxima semana más o menos, pero mientras tanto, me gustaría volver a Python 3.6.5.x
A brew info python
muestra que las versiones anteriores todavía están instaladas y no depuradas:
➜ 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
Varios brew link
y brew install
comandos sugeridos por otros sitios no parecen funcionar:
➜ brew link python@3.6.5
Error: No such keg: /usr/local/Cellar/python@3.6.5
➜ brew link python@3.6.5_1
Error: No such keg: /usr/local/Cellar/python@3.6.5_1
➜ brew install python@3.6.5
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.
Respuestas:
Si todavía tiene las versiones anteriores disponibles, puede usar
fuente
brew switch ...
comando para volver a 3.7?python3 -m venv --copies venv
copias de los archivos de Python en lugar de crear enlaces simbólicos, lo que evita que se rompan al actualizar su versión de Python.Error: python does not have a version "3.6.5_1" in the Cellar. python installed versions: 3.7.0
Si no tiene una versión anterior para cambiar, puede instalar desde la fórmula anterior de esta manera:
Actualización 2019-10
- aviso de ignorar dependencias
En caso de que esté utilizando el
--ignore-dependencies
indicador para superar elrecursive dependency
error, puede darle el siguiente error cuando lo hagapip3 install
después de dicha instalación:Una solución alternativa puede ser instalar primero sus dependencias (todo excepto
sphinx-doc
)Tenga en cuenta que necesita
openssl
y NO[email protected]
cuál es la última dependencia en homebrew python 3.7.4_1fuente
brew unlink python
hace.brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
.--ignore-dependencies
no funciona debido a sphinx, comente la dependencia en sphinx y vuelva aError: python contains a recursive dependency on itself: python depends on sphinx-doc sphinx-doc depends on python
Dos opciones
Para recuperar una versión de Python previamente instalada:
Use
brew info python
para ver lo que ha instalado previamentePara realizar una instalación limpia de Python 3.6.5 use:
Respuesta larga
Hay dos fórmulas para instalar Python con Homebrew:
python@2
ypython
.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 justopython
!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.O específicamente para Python 3
La dirección que debe especificar es la dirección de 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 de arriba no encontrarás una fórmula para una versión de Python anterior a 3.6.5. Después de que los encargados del repositorio (oficial) lanzaron Python 3.7, solo envían actualizaciones a la receta de Python 3.7.
Como se explicó anteriormente, con homebrew solo tiene Python 2 (python @ 2) y Python 3 (python), no hay una fórmula explícita para Python 3.6 .
Aunque esas actualizaciones menores son 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.
fuente
Siguiendo el Paso # 3: Downgrade Python 3.7 a Python 3.6 en macOS Mojave aquí funcionó para mí: https://www.pyimagesearch.com/2019/01/30/macos-mojave-install-tensorflow-and-keras-for-deep -aprendizaje/
fuente
Puede retroceder temporalmente
homebrew-core
y establecer laHOMEBREW_NO_AUTO_UPDATE
variable para mantenerlo en su lugar:No recomiendo hacer retroceder permanentemente homebrew-core, ya que se perderán los parches de seguridad, pero es útil para fines de prueba.
También puede extraer versiones antiguas de fórmulas homebrew en su propio toque (tap_owner / tap_name) usando el
brew extract
comando:fuente
brew link [email protected]
. Aunquepyenv
es otra opción también.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
fuente