Wie kann ich eine frühere Version von Python 3 unter macOS mit brew installieren?
Mit dem Befehl brew install python
habe ich die neueste Version von Python 3 (derzeit v3.7.0), aber ich möchte die letzte Version von Python 3.6 (derzeit 3.6.5) .
Ich habe über ein anderes Paket pyenv
gelesen, das bei der Handhabung unterschiedlicher python -Installationen behilflich sein kann, aber diese Lösung ist für mich nicht geeignet.
Um eine Neuinstallation von Python 3.6.5 durchzuführen, verwenden Sie:
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
Wenn Sie eine zuvor installierte Version wiederherstellen möchten, gehen Sie wie folgt vor:
brew info python # To see what you have previously installed
brew switch python 3.x.x_x # Ex. 3.6.5_1
Es gibt zwei Formeln für die Installation von Python mit Homebrew: [email protected]
und python
.
Das erste ist für Python 2 und das zweite für Python 3.
Hinweis: Im Internet finden Sie veraltete Antworten, in denen python3
als Formelname für die Installation von Python angegeben ist. Version 3. Jetzt ist es nur noch python
!
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.
Mit brew
können Sie ein Paket unter Verwendung der Adresse der Formel installieren, beispielsweise in einem Git-Repository.
brew install https://the/address/to/the/formula/FORMULA_NAME.rb
Oder speziell für Python 3
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb
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
Im obigen Link finden Sie keine Formel für eine Version von Python über 3.6.5. Nachdem die Betreuer dieses (offiziellen) Repositorys Python 3.7 veröffentlicht haben, übermitteln sie nur Aktualisierungen an das Rezept von Python 3.7.
Wie oben erklärt, haben Sie 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.
Als Update dabei
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
Sie können begegnen
Error: python contains a recursive dependency on itself:
python depends on sphinx-doc
sphinx-doc depends on python
Fügen Sie das Argument --ignore-dependencies
hinzu, um die Installation zu umgehen.
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
Ich habe zuerst python 3.7 installiert
brew install python3
brew unlink python
dann habe ich python 3.6.5 über den obigen Link installiert
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb --ignore-dependencies
Danach habe ich brew link --overwrite python
ausgeführt. Jetzt habe ich alle Pythons im System, um die virtuellen Umgebungen zu erstellen.
[email protected]~ $ python --version
Python 2.7.10
[email protected]~ $ python3.7 --version
Python 3.7.1
[email protected]~ $ python3.6 --version
Python 3.6.5
So erstellen Sie eine Python 3.7 virtuelle Umgebung.
[email protected]~ $ 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.
[email protected]~ $ source env/bin/activate
(env) [email protected]~ $ python --version
Python 3.7.1
(env) [email protected]~ $ deactivate
So erstellen Sie eine Python 3.6 virtuelle Umgebung
[email protected]~ $ 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.
[email protected]~ $ source env/bin/activate
(env) [email protected]~ $ python --version
Python 3.6.5
(env) [email protected]~ $
Ich habe alle obigen Antworten ausprobiert, um Python 3.4.4 zu installieren. Die Installation von python hat funktioniert, aber PIP wurde nicht installiert und ich konnte nichts tun, damit es funktioniert. Ich habe Mac OSX Mojave verwendet, was zu Problemen mit zlib, openssl, führt.
Was nicht zu tun ist:
Lösung:
p.s: Sie müssen Ihre andere Version von Python auf Ihrem System nicht deinstallieren.
Bearbeiten:
Ich habe eine viel viel bessere Lösung gefunden, die unter MacOSX, Windows, Linux usw. funktioniert.
conda init
conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
conda info --envs
conda activate [The name of your virtual environment that was shown with the command at step 5]
Um dies mit homebrew
zu lösen, können Sie homebrew-core
vorübergehend zurückdatieren und die Variable HOMEBREW_NO_AUTO_UPDATE
so einstellen, dass sie an ihrem Platz bleibt:
cd `brew --repo homebrew/core`
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python
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 Befehl brew extract
in Ihr eigenes Tap (tap_owner/tap_name) extrahieren:
brew extract python tap_owner/tap_name --version=3.6.5