Ein brew upgrade
Upgrade meines Python-Systems auf Python 3.7. Leider bricht Python 3.7 andere Software, die ich verwenden muss (einschließlich, aber nicht beschränkt auf Ansible). Ich kann mir vorstellen, dass diese Probleme in der nächsten Woche behoben werden. In der Zwischenzeit möchte ich jedoch ein Rollback auf Python 3.6.5.x durchführen
A brew info python
zeigt, dass frühere Versionen noch installiert und nicht gelöscht sind:
➜ 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
Verschiedene brew link
und brew install
von anderen Websites vorgeschlagene Befehle scheinen nicht zu funktionieren:
➜ 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.
Antworten:
Wenn Sie noch die vorherigen Versionen zur Verfügung haben, können Sie nur verwenden
quelle
brew switch ...
Befehl an diesem Tag rückgängig machen , um zu 3.7 zurückzukehren?python3 -m venv --copies venv
Kopien der Python-Dateien, anstatt Symlinks zu erstellen, um zu verhindern, dass diese beim Upgrade Ihrer Python-Version beschädigt werden .Error: python does not have a version "3.6.5_1" in the Cellar. python installed versions: 3.7.0
Wenn Sie keine Vorgängerversion haben, zu der Sie wechseln können, können Sie von der vorherigen Formel auf folgende Weise installieren:
Update 2019-10
--ignore-dependencies Nachricht
Falls Sie sich mit
--ignore-dependencies
Flag zu überwindenrecursive dependency
Fehler, kann es die folgende Fehler geben , wenn Sie tun ,pip3 install
nach einer solchen Installation:Eine Problemumgehung kann darin bestehen, zuerst die Abhängigkeiten zu installieren (alles außer
sphinx-doc
).Beachten Sie, dass es NOT benötigt
openssl
und dies eine aktuelle Abhängigkeit in Homebrew Python 3.7.4_1 ist[email protected]
quelle
brew unlink python
tut.brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
.--ignore-dependencies
es aufgrund von Sphinx nicht funktioniert, kommentieren Sie die Abhängigkeit in Sphinx aus und installieren Sie Sphinx neu, wie hier beschrieben: pyimagesearch.com/2019/01/30/…Error: python contains a recursive dependency on itself: python depends on sphinx-doc sphinx-doc depends on python
Zwei Optionen
So stellen Sie eine zuvor installierte Python-Version wieder her:
Verwenden Sie, um
brew info python
zu sehen, was Sie zuvor installiert habenSo führen Sie eine Neuinstallation von Python 3.6.5 durch:
Lange Antwort
Es gibt zwei Formeln für die Installation von Python mit Homebrew:
python@2
undpython
.Das erste ist für Python 2 und das zweite für Python 3.
Hinweis: Veraltete Antworten finden Sie im Web, wo sie
python3
als Formelname für die Installation von Python Version 3 angegeben werden. Jetzt ist es nur nochpython
!Standardmäßig können Sie mit diesen Formeln die neueste Version der entsprechenden Hauptversion von Python installieren. Daher können Sie eine Nebenversion wie 3.6 nicht direkt installieren.
Lösung:
Mit
brew
können Sie ein Paket unter Verwendung der Adresse der Formel installieren, beispielsweise in einem Git-Repository.Oder speziell für Python 3
Die Adresse, die Sie angeben müssen, ist die Adresse bis zum letzten Festschreiben der Formel (python.rb) für die gewünschte Version. Sie finden die Commint-ID, indem Sie sich den Verlauf für homebrew-core / Formula / python.rb ansehen
https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb
Python> 3.6.5
Im obigen Link finden Sie keine Formel für eine Version von Python über 3.6.5. Nachdem die Betreuer dieses (offiziellen) Repository Python 3.7 veröffentlicht haben, übermitteln sie nur Aktualisierungen an das Rezept von Python 3.7.
Wie oben erläutert, gibt es bei Homebrew nur Python 2 (Python @ 2) und Python 3 (Python). Es gibt keine explizite Formel für Python 3.6 .
Obwohl diese geringfügigen Aktualisierungen in den meisten Fällen und für die meisten Benutzer zumeist irrelevant sind, suche ich, ob jemand eine explizite Formel für 3.6 erstellt hat.
quelle
Im Anschluss an Schritt 3: Herunterstufung Python 3.7 zu Python 3.6 auf macOS Mojave hier für mich gearbeitet: https://www.pyimagesearch.com/2019/01/30/macos-mojave-install-tensorflow-and-keras-for-deep -Lernen/
quelle
Sie können
homebrew-core
dieHOMEBREW_NO_AUTO_UPDATE
Variable vorübergehend zurückdatieren und so einstellen , dass sie an ihrem Platz bleibt :Ich empfehle keine dauerhafte Backdatierung des Homebrew-Kerns, da Sie Sicherheitspatches verpassen, aber dies ist zu Testzwecken nützlich.
Sie können auch alte Versionen von Homebrew-Formeln mit dem folgenden
brew extract
Befehl in Ihr eigenes Tap (tap_owner / tap_name) extrahieren :quelle
brew link [email protected]
. Espyenv
ist jedoch auch eine andere Option.Ich bin kein Experte in diesem Bereich, hatte aber das gleiche Problem. Das hat bei mir funktioniert:
$ 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
quelle