Der richtige und falsche Weg, um das einrichten der Python 3 auf MacOS
I“ve been eintauchen meinen Zeh wieder in die Python-Entwicklung wie bekomme ich bereit, den Kopf zu PyCon US. (Wenn Sie auch dorthin gehen und Ihre Python-Geschichte teilen möchten, lassen Sie es mich wissen!) Als ich ein Modul zum Basteln installierte, bekam ich eine Erinnerung, dass ich Python 3 bald installieren musste.
$ pip install todoist-python
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won"t be maintained after that date. A future version of pip will drop support for Python 2.7.
Also habe ich getan, was jeder von uns tun würde, und nach einer Anleitung zum Aktualisieren meiner Entwicklungsumgebung gegoogelt, die auf dem Mac läuft (das macOS-Betriebssystem, früher bekannt als OS X)., Zu meiner Überraschung fand ich nur eine Handvoll StackOverflow-Posts und sie wiesen mich auf Teillösungen hin. Hier ist die ganze Geschichte, wie Sie Ihre Umgebung einrichten, ohne etwas in das macOS-Betriebssystem eingebaut zu brechen.
1. Installieren Sie pyenv
Moshe Zadka warnt davor, dass dies zu einer unzuverlässigen Vorstellung davon führen kann, welche Python ausgeführt wird, die zu eng von Shells abhängt, die Aliase laden. Ich wusste, dass Moshe mit Python vertraut war, aber was ich nicht wusste, ist, dass er ein Autor von vielen Python-Tutorials sowie ein bevorstehendes Buch über Python-Entwicklung auf macOS ist., Er half 40 Kollegen, Python sicher und konsequent auf macOS-Systemen nach einem Kernprinzip zu entwickeln:
„Die Grundvoraussetzung aller Python-Entwicklung ist, niemals das System zu verwenden Python. Sie möchten nicht, dass Mac OS X „Standard Python „“ python3.“Sie möchten sich nie um Standard-Python kümmern.“
Wie hören wir auf, uns um den Standard zu kümmern? Moshe empfiehlt die Verwendung von pyenv zum Verwalten von Python-Umgebungen (einen tieferen Einblick in die Konfiguration von pyenv finden Sie in diesem Artikel)., Dieses Tool verwaltet mehrere Versionen von Python und wird als „einfach, unauffällig und folgt der Unix-Tradition von Einzelzweck-Tools, die eine Sache gut machen.“
Während andere Installationsoptionen verfügbar sind, ist der einfachste Weg, um loszulegen, mit Homebrew:
$ brew install pyenv
🍺 /usr/local/Cellar/pyenv/1.2.10: 634 files, 2.4MB
Install Python
Jetzt installieren wir die neueste Python-Version (3.7.,3 zum Zeitpunkt des Schreibens):
Setzen Sie Ihren globalen Standard
Nachdem Python 3 über pyenv installiert wurde, möchten wir ihn als unsere globale Standardversion für pyenv-Umgebungen festlegen:
$ pyenv global 3.7.3
# and verify it worked
$ pyenv version
3.7.3 (set by /Users/mbbroberg/.pyenv/version)
Die Leistung von pyenv beruht auf der Kontrolle über den Pfad unserer Shell. Damit es richtig funktioniert, müssen wir unserer Konfigurationsdatei Folgendes hinzufügen (.zshrc für mich, möglicherweise .bash_profile für Sie):
Nach diesem Befehl, unsere dotfile (.zshrc für zsh oder .,bash_profile für Bash) sollte diese Zeilen enthalten:
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
Jetzt wissen wir sicher, dass wir Python 3.7.3 verwenden und pip wird daneben ohne manuelles Aliasing zwischen den Versionen aktualisiert. Die Verwendung von Moshes Empfehlung, einen Versionsmanager (pyenv) zu verwenden, ermöglicht es uns, zukünftige Upgrades problemlos zu akzeptieren, ohne zu verwirrt zu werden, welche Python wir zu einem bestimmten Zeitpunkt ausführen.
Erfolg
Wenn Sie sich mit diesem Workflow vertraut machen, können Sie pyenv verwenden, um mehrere Versionen von Python zu verwalten. Es ist auch wichtig, für Dependency Management, virtuelle Umgebungen zu verwenden., Ich erwähne, wie man die eingebaute venv-Bibliothek in dem Artikel verwendet, und Moshe empfiehlt virtualenvwrapper zum Verwalten virtueller Umgebungen.
Python-Laufzeiten verstehen
Nun, da Sie Ihre Python-Versionen behoben haben, ist es sicher zu erforschen, warum dieses Problem so viele Menschen verwirrt.
Die Version von Python, die mit macOS ausgeliefert wird, ist weit veraltet von dem, was Python für die Entwicklung empfiehlt. Das Nachdenken über Python-Laufzeiten kann manchmal komisch schwierig sein, wie von XKCD festgestellt.,
Viele Benutzer haben bereits Dutzende von Python-Dolmetschern auf ihrem Computer, haben aber keine Ahnung, wie sie effektiv verwaltet werden sollen. Zu oft laden die Leute einfach die neueste Python-Version herunter, verschieben sie in ihren Pfad und rufen sie einen Tag auf (oder verwenden Sie brew install python3, was etwas Ähnliches tun würde). Dies kann zu Ausfällen auf frustrierende Weise führen, die schwierig zu beheben sind.,
Was NICHT zu tun
Meine erste Idee, wie man Python 3 die Standard-Python auf meinem system war, verschieben Sie die alte version und die neue mit add hinzufügen:
Das Muster gefolgt, welche /usr/bin/ der Regel nicht zwischen den Hauptversionen von Python, aber ich habe schnell gelernt, es war die falsche Bewegung:
$ sudo mv /usr/bin/python /usr/bin/python2
mv: rename /usr/bin/python to /usr/bin/python2: Operation not permitted
zum Glück macOS mich beschützt vom brechen von etwas, das ich nicht vollständig verstehen. Weitere Forschung beweist, dass dies genau das ist, was wir nicht tun sollten.
Eine andere Sache nicht zu versuchen
Nun, da wir wissen, was nicht zu tun ist, schauen wir uns an, was wir tun könnten., Es gibt einige Optionen, wenn wir über gängige Installationsmuster für Anwendungen unter macOS nachdenken.
Verwendung von Python 3 als macOS-Standard
Python“s Webseite hat ein macOS-Python 3-Installationsprogramm wir Sie herunterladen und verwenden können. Wenn wir die Paketinstallation verwenden, ist eine python3-Füllung in /usr/local/bin/verfügbar.
Aliasing ist ein muss, da die Python-Binärdatei gespeichert in /usr/bin/ can“t geändert werden. Was ist schön an einem Alias ist, dass es spezifisch für unsere Kommandozeilen-Shell ist. Da ich standardmäßig zsh verwende, habe ich Folgendes in die .,zshrc-Datei:
Wenn Sie die Standard-Bash-Shell verwenden, können Sie denselben Text an Ihre anhängen .bashrc:
Diese Strategie funktioniert, aber es ist nicht ideal für zukünftige Updates auf Python zu machen. Es bedeutet, dass wir daran denken müssen, die Website zu überprüfen und die neuen Dateien herunterladen, da Python doesn“t eine Befehlszeilenmethode enthält zu aktualisieren.
Lassen Sie Homebrew Python 3 verwalten
Das Homebrew-Projekt bietet einen kostenlosen Open-Source-Paketmanager für macOS, auf den sich viele Menschen verlassen. Es gibt Apple-Benutzern eine ähnliche Leistung wie apt-get oder yum., Wenn Sie ein Homebrew-Benutzer sind, haben Sie möglicherweise bereits Python installiert. Führen Sie zum schnellen Überprüfen Folgendes aus:
$ brew list | grep python
python
Wenn Python unter dem Befehl angezeigt wird, ist es installiert. Welche version ist es? Let“s check:
Okay, Super! Die Homebrew-Betreuer haben die Standard-Python-Flasche aktualisiert, um auf die neueste Version zu verweisen., Da die Homebrew-Betreuer beim Aktualisieren der Version zuverlässiger sind als die meisten von uns, können wir die Version von Python 3 von Homebrew mit dem folgenden Befehl verwenden:
Jetzt möchten wir unseren Alias (von oben) auf die Kopie von Python verweisen, die Homebrew verwaltet:
# If you added the previous alias, use a text editor to update the line to the following
alias python=/usr/local/bin/python3
Um sicherzustellen, dass der obige Pfad darauf hinweist, wo Homebrew Python in unserer Umgebung installiert hat, wir können brew info Python ausführen und nach den Pfadinformationen suchen.,
Diese Methode, Homebrew zum Verwalten unserer Python-Umgebung zu verwenden, ist ein guter Ausgangspunkt, und es machte für mich damals Sinn.
Was ist, wenn wir Python 2 noch brauchen?
Es macht Sinn, dass jeder, der neu in Python ist, mit Python 3 beginnt., Aber diejenigen von uns, die immer noch Python 2 benötigen—zum Beispiel, um zu einem Python—Projekt beizutragen, das nur in Python 2 verfügbar ist-können weiterhin die Standard-macOS Python-Binärdatei verwenden, die in /usr/bin/python verfügbar ist:
$ /usr/bin/python
>>> print("This runtime still works!")
This runtime still works!
Homebrew ist so wunderbar, dass es sogar eine andere Formel für Python 2 bietet:
# If you need Homebrew"s Python 2.7 run
$ brew install python@2
Wir können die Aliase jederzeit aus unserer Shell entfernen“s Konfigurationsdatei, um wieder die Standardkopie von Python auf dem System zu verwenden.
Vergessen Sie nicht, pip auf pip3 zu aktualisieren!,
Der Befehl pip ist der Standard-Paketmanager speziell für Python-Pakete. Obwohl wir unseren Standard-Python-Befehl auf Version 3 geändert haben, müssen wir unseren pip-Befehl separat aliasieren, wenn er in der vorherigen Version enthalten ist. Zuerst müssen wir überprüfen, auf welcher Version wir sind:
Um sicherzustellen, dass wir Pakete installieren, die mit unserer neuen Version von Python kompatibel sind, verwenden wir einen anderen Alias, um auf die kompatible Version von pip zu verweisen. Da wir Homebrew in dieser Situation als Paketmanager verwenden, wissen wir, dass pip3 installiert wurde, als wir Python 3 installiert haben., Der Standardpfad sollte derselbe sein wie Python 3, aber wir können dies bestätigen, indem wir die Shell bitten, ihn zu finden:
$ which pip3
/usr/local/bin/pip3
Nachdem wir den Speicherort kennen, fügen wir ihn wie zuvor zu unserer Shell-Konfigurationsdatei hinzu:
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc
# or for Bash
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc
Zuletzt können wir bestätigen, dass das Ausführen von pip auf pip3 zeigt, indem wir eine neue Shell öffnen oder unsere aktuelle Shell zurücksetzen und sehen, worauf wir:
# This command reloads the current shell without exiting the session
# Alternatively, exit the shell and start a new one
$ exec $0
# Now we can look to see where pip points us
$ which pip
pip: aliased to /usr/local/bin/pip3
Wir können die Verwendung von Homebrew zum Aktualisieren von pip vermeiden, aber das erfordert ein viel längeres Tutorial aus der Python-Dokumentation.,
Tun Sie es von Anfang an
Wenn Sie gerade erst mit der Python-Entwicklung auf einem macOS beginnen, führen Sie die erforderlichen Konfigurationen durch, um sicherzustellen, dass Sie von Anfang an die richtige Version von Python verwenden. Wenn Sie Python 3 mit oder ohne Homebrew installieren und Alias verwenden, können Sie mit dem Codieren beginnen, aber es ist auf lange Sicht keine gute Strategie. Verwenden Sie pyenv als einfache Versionsmanagementlösung, um einen guten Start zu erzielen.
Dieser Artikel wurde ursprünglich im Mai 2019 veröffentlicht und vom Herausgeber aktualisiert.