A brew upgrade
mis à niveau mon système Python vers Python 3.7. Malheureusement, Python 3.7 casse d'autres logiciels que je dois utiliser (y compris, mais sans s'y limiter, Ansible). J'imagine que ces problèmes seront résolus la semaine prochaine environ, mais dans l'intervalle, j'aimerais revenir à Python 3.6.5.x
A brew info python
montre que les versions précédentes sont toujours installées et non purgées:
➜ 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
Divers brew link
et les brew install
commandes suggérées par d'autres sites ne semblent pas fonctionner:
➜ 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.
Réponses:
Si vous avez toujours les versions précédentes disponibles, vous pouvez simplement utiliser
la source
brew switch ...
commande pour revenir à 3.7?python3 -m venv --copies venv
copies des fichiers Python au lieu de créer des liens symboliques, ce qui les empêche de se rompre lors de la mise à niveau de votre version de Python.Error: python does not have a version "3.6.5_1" in the Cellar. python installed versions: 3.7.0
Si vous ne disposez pas de la version précédente, vous pouvez installer de la même manière la formule précédente:
Mise à jour 2019-10
- note-dépendances remarque
Si vous utilisez un
--ignore-dependencies
indicateur pour surmonter unerecursive dependency
erreur, il se peut que l'erreur suivante vous apparaissepip3 install
après cette installation:Une solution de contournement peut être d’installer d’abord ses dépendances (tout sauf
sphinx-doc
)Notez qu’il faut
openssl
et PAS[email protected]
une dernière dépendance de homebrew python 3.7.4_1.la source
brew unlink python
passe.brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
.--ignore-dependencies
cela ne fonctionne pas à cause de sphinx, commentez la dépendance de sphinx et réinstallez sphinx comme décrit ici: pyimagesearch.com/2019/01/30/…Error: python contains a recursive dependency on itself: python depends on sphinx-doc sphinx-doc depends on python
Deux options
Pour récupérer une version Python précédemment installée:
Utilisez
brew info python
pour voir ce que vous avez déjà installéPour effectuer une nouvelle installation de Python 3.6.5, utilisez:
Longue réponse
Il existe deux formules pour installer Python avec Homebrew:
python@2
etpython
.Le premier est pour Python 2 et le second pour Python 3.
Remarque: vous pouvez trouver des réponses obsolètes sur le Web, où il est mentionné
python3
comme nom de formule pour l'installation de Python version 3. Maintenant, c'est justepython
!Par défaut, avec ces formules, vous pouvez installer la dernière version de la version majeure correspondante de Python. Donc, vous ne pouvez pas installer directement une version mineure telle que 3.6.
Solution:
Avec
brew
, vous pouvez installer un paquet en utilisant l’adresse de la formule, par exemple dans un référentiel git.Ou spécifiquement pour Python 3
L'adresse que vous devez spécifier est l'adresse du dernier commit de la formule (python.rb) pour la version souhaitée. Vous pouvez trouver l'identifiant de commande en consultant l'historique de homebrew-core / Formula / python.rb
https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb
Python> 3.6.5
Dans le lien ci-dessus, vous ne trouverez pas de formule pour une version de Python supérieure à 3.6.5. Une fois que les responsables de ce référentiel (officiel) ont publié Python 3.7, ils ne soumettent que les mises à jour de la recette de Python 3.7.
Comme expliqué ci-dessus, avec homebrew vous n'avez que Python 2 (Python @ 2) et Python 3 (Python), il n'y a pas de formule explicite pour Python 3.6 .
Bien que ces mises à jour mineures ne soient généralement pas pertinentes dans la plupart des cas et pour la plupart des utilisateurs, je vais rechercher si quelqu'un a déjà utilisé une formule explicite pour 3.6.
la source
Après l’ étape 3: rétrograder Python 3.7 à Python 3.6 sur macOS Mojave a ici fonctionné pour moi: https://www.pyimagesearch.com/2019/01/30/macos-mojave-install-tensorflow-and-keras-for-deep -apprentissage/
la source
Vous pouvez temporairement antidater
homebrew-core
et définir laHOMEBREW_NO_AUTO_UPDATE
variable pour la maintenir en place:Je ne recommande pas de donner un antidatage permanent à l'homebrew-core, car vous manquerez de correctifs de sécurité, mais cela s'avère utile à des fins de test.
Vous pouvez également extraire d'anciennes versions de formules homebrew dans votre propre tap (propriétaire_ tap / nom_ tap) à l'aide de la
brew extract
commande suivante:la source
brew link [email protected]
. Bien quepyenv
soit une autre option aussi.Je ne suis pas un expert en la matière, mais j'ai le même problème. C'est ce qui a fonctionné pour moi:
$ 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
la source