Kapitel 1. Installation von Python
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Wenn du dieses Buch in die Hand nimmst, hast du wahrscheinlich schon Python auf deinem Rechner installiert. Die meisten gängigen Betriebssysteme werden mit einem python3
Befehl ausgeliefert. Das kann der Interpreter sein, der vom System selbst verwendet wird; unter Windows und macOS ist es ein Platzhalter, der Python für dich installiert, wenn du es zum ersten Mal aufrufst.
Warum wird dem Thema ein ganzes Kapitel gewidmet, wenn es so einfach ist, Python auf einem neuen Rechner zu installieren? Die Antwort ist, dass die Installation von Python für die langfristige Entwicklung eine komplexe Angelegenheit sein kann, und dafür gibt es mehrere Gründe:
-
In der Regel musst du mehrere Python-Versionen nebeneinander installieren. (Wenn du dich fragst, warum das so ist, kommen wir gleich darauf zu sprechen).
-
Es gibt verschiedene Möglichkeiten, Python auf den gängigen Plattformen zu installieren, jede mit einzigartigen Vorteilen, Nachteilen und manchmal auch Fallstricken.
-
Python ist ein bewegliches Ziel: Du musst bestehende Installationen mit der neuesten Wartungsversion auf dem neuesten Stand halten, Installationen hinzufügen, wenn eine neue Funktionsversion veröffentlicht wird, und Versionen entfernen, die nicht mehr unterstützt werden. Vielleicht musst du sogar eine Vorabversion des nächsten Python testen.
-
Vielleicht möchtest du, dass dein Code auf mehreren Plattformen läuft. Mit Python ist es zwar einfach, portable Programme zu schreiben, aber die Einrichtung einer Entwicklungsumgebung erfordert eine gewisse Vertrautheit mit den Eigenheiten jeder Plattform.
-
Vielleicht möchtest du deinen Code mit einer alternativen Implementierung von Python ausführen.1
In diesem ersten Kapitel zeige ich dir, wie du mehrere Python-Versionen auf einigen der wichtigsten Betriebssysteme nachhaltig installieren kannst - und wie du deine kleine Schlangenfarm in Schuss hältst.
Tipp
Auch wenn du nur für eine einzige Plattform entwickelst, solltest du dich mit Python auf anderen Betriebssystemen vertraut machen. Es macht Spaß - und wenn du dich mit anderen Plattformen auskennst, kannst du den Mitwirkenden und Nutzern deiner Software ein besseres Erlebnis bieten.
Unterstützung für mehrere Python-Versionen
Python-Programme zielen oft auf mehrere Versionen der Sprache und der Standardbibliothek gleichzeitig ab. Das mag dich überraschen. Warum solltest du deinen Code mit etwas anderem als der neuesten Python-Version ausführen? Immerhin können deine Programme so sofort von neuen Sprachfunktionen und Verbesserungen der Bibliothek profitieren.
Es hat sich herausgestellt, dass Laufzeitumgebungen oft mit einer Vielzahl älterer Python-Versionen ausgeliefert werden.2 Auch wenn du deine Entwicklungsumgebungen gut unter Kontrolle hast, solltest du dir angewöhnen, mit mehreren Versionen zu testen. Der Tag, an dem das vertraute Python in deiner Produktionsumgebung in einem Sicherheitshinweis auftaucht, sollte nicht der Tag sein, an dem du deinen Code auf neuere Versionen portierst.
Aus diesen Gründen ist es üblich, sowohl aktuelle als auch frühere Versionen von Python bis zu ihrem offiziellen End-of-Life-Datum zu unterstützen und sie nebeneinander auf einem Entwicklerrechner zu installieren. Da jedes Jahr neue Funktionsversionen herauskommen und sich der Support über fünf Jahre erstreckt, erhältst du eine Testmatrix mit fünf aktiv unterstützten Versionen (sieheAbbildung 1-1). Wenn sich das nach viel Arbeit anhört, keine Sorge: Das Python-Ökosystem verfügt über Werkzeuge, mit denen dies ein Kinderspiel ist.
Python-Interpreter ausfindig machen
Wie wählst du den richtigen Python Interpreter aus, wenn du mehrere Interpreter auf deinem System hast? Schauen wir uns ein konkretes Beispiel an. Wenn du python3
in die Befehlszeile eingibst, durchsucht die Shell die Verzeichnisse in der Umgebungsvariablen PATH
von links nach rechts und ruft die erste ausführbare Datei namens python3
auf. Python-Installationen auf macOS und Linux bieten auch Befehle mit den Namen python3.12
,python3.11
und so weiter, damit du zwischen den verschiedenen Funktionsversionen unterscheiden kannst.
Hinweis
Unter Windows ist die PATH
-basierte Interpretererkennung weniger relevant, da Python-Installationen über die Windows Registry gefunden werden können (siehe"Der Python Launcher für Windows"). Windows-Installationsprogramme liefern nur eine nicht versionierte python.exe
ausführbare Datei mit.
Abbildung 1-2 zeigt einen macOS-Rechner mit mehreren Python-Installationen. Von unten beginnend befindet sich der erste Interpreter in/usr/bin/python3 und ist Teil von Apples Command Line Tools (Python 3.9 zum Zeitpunkt der Erstellung). Als Nächstes folgen in /opt/homebrew/bin mehrere Interpreter aus der Homebrew-Distribution; der Befehl python3
hier ist sein Hauptinterpreter (Python 3.11). Auf die Homebrew-Interpreter folgt eine Vorabversion vonpython.org (Python 3.13). Der oberste Eintrag enthält die aktuelle Version (Python 3.12 zum Zeitpunkt dieses Artikels), ebenfalls von Homebrew.
Die Reihenfolge der Verzeichnisse im Suchpfad spielt eine Rolle, da frühere Einträge Vorrang vor späteren haben oder diese "überschatten". In Abbildung 1-2 verweistpython3
auf die aktuelle stabile Version (Python 3.12). Wenn du den obersten Eintrag weglassen würdest, würde python3
auf die Vorabversion (Python 3.13) verweisen. Ohne die beiden obersten Einträge würde es sich um den Standardinterpreter von Homebrew handeln, der noch auf der vorherigen stabilen Version (Python 3.11) läuft.
Das Auffinden von Python-Interpretern auf PATH
ist eine häufige Fehlerquelle. Manche Installationen überschreiben den Befehl python3
in gemeinsamen Verzeichnissen wie/usr/local/bin. Andere legen python3
in einem anderen Verzeichnis ab und ändernPATH
, um ihm den Vorrang zu geben, so dass es früher installierte Versionen überschattet. Um diese Probleme zu lösen, verwendet dieses Buch den Python Launcher für Unix (siehe"Der Python Launcher für Unix"). Wenn du jedoch die Funktionsweise der Variable PATH
verstehst, kannst du Probleme bei der Python-Erkennung unter Windows, macOS und Linux vermeiden.
Eine übliche Vorgabe für die Variable PATH
ist /usr/local/bin:/usr/bin:/bin
auf Unix-ähnlichen Systemen, meist kombiniert mit einigen betriebssystemabhängigen Speicherorten. Du kannst die Variable mit der in vielen Shells eingebauten export
ändern. So fügst du mit der Bash-Shell eine Python-Installation in /usr/local/opt/python hinzu:
export
PATH
=
"/usr/local/opt/python/bin:
$PATH
"
Du fügst das Unterverzeichnis bin anstelle des Stammverzeichnisses der Installation hinzu, denn dort befindet sich normalerweise der Interpreter auf diesen Systemen. Wir werden uns den Aufbau von Python-Installationen in Kapitel 2 genauer ansehen. Außerdem fügst du das Verzeichnis vor der Variable PATH
hinzu. Ich werde gleich erklären, warum du das normalerweise willst.
Die vorherige Zeile funktioniert auch mit Zsh, der Standard-Shell unter macOS. Allerdings gibt es einen idiomatischeren Weg, den Suchpfad in Zsh zu manipulieren:
typeset
-U
path
path
=
(
/usr/local/opt/python/bin
$path
)
Dies weist die Shell an, doppelte Einträge aus dem Suchpfad zu entfernen.
Die Shell hält das Array
path
mit der VariablePATH
synchronisiert.
Die Fischmuschel bietet eine Funktion, um eindeutig und dauerhaft einen Eintrag in den Suchpfad voranzustellen:
fish_add_path /usr/local/opt/python/bin
Es wäre mühsam, den Suchpfad zu Beginn jeder Shell-Sitzung manuell unter einzurichten. Stattdessen kannst du die oben genannten Befehle in dein Shell-Profil aufnehmen - eineDatei in deinem Home-Verzeichnis, die von der Shell beim Start gelesen wird.Tabelle 1-1 zeigt die gängigsten Befehle.
Shell | Startup-Datei |
---|---|
Bash |
.bash_profile (Debian und Ubuntu: .profile) |
Zsh |
.zshrc |
Fisch |
.config/fish/fish.config |
Warum ist es wichtig, der Variable PATH
neue Verzeichnisse voranzustellen? Auf einer unberührten macOS- oder Linux-Installation zeigt der Befehl python3
oft auf eine alte Version von Python. Als Python-Entwickler sollte dein Standard-Interpreter die neueste stabile Version von Python sein. Durch das Voranstellen von PATH
kannst du kontrollieren, welche Python-Installation deine Shell auswählt, wenn sie mit einem zweideutigen Befehl wie python3
konfrontiert wird. Du kannst garantieren, dass python3
auf die letzte stabile Version von Python verweist und dass jede python3.x
auf die letzte Bugfix- oder Sicherheitsversion der 3.x-Linie verweist.
Tipp
Wenn dein System nicht bereits über eine gut kuratierte und aktuelle Auswahl an Interpretern verfügt, füge der Umgebungsvariablen PATH
Python-Installationen hinzu, wobei die neueste stabile Version ganz vorne steht.
Installation von Python unter Windows
Das Python-Kernteam stellt offizielle Binärinstaller imAbschnitt Downloads für Windows auf der Python-Website zur Verfügung. Finde die neueste Version jeder Python-Version, die du unterstützen möchtest, und lade das 64-Bit-Installationsprogramm für Windows herunter.
Hinweis
Je nach Domäne und Zielumgebung kannst du es vorziehen, das Windows Subsystem für Linux (WSL) für die Python-Entwicklung zu verwenden. In diesem Fall lesen Sie bitte stattdessen den Abschnitt "Python unter Linux installieren".
Im Allgemeinen sollte es kaum nötig sein, die Installation anzupassen - mit einer Ausnahme: Wenn du die letzte stabile Version installierst (und nur dann), aktiviere auf der ersten Seite des Installationsdialogs die Option, Python zu deiner Umgebungsvariablen PATH
hinzuzufügen. Dadurch wird sichergestellt, dass dein Standardbefehl python
eine bekannte und aktuelle Python-Version verwendet.
Aus diesen Gründen sind die python.org-Installer eine effiziente Methode , um Python-Umgebungen mit mehreren Versionen unter Windows einzurichten:
-
Sie registrieren jede Python-Installation in der Windows-Registrierung, damit Entwicklerwerkzeuge die Interpreter auf dem System leicht finden können (siehe"Der Python Launcher für Windows").
-
Sie haben nicht die Nachteile von weiterverbreiteten Python-Versionen, wie zum Beispiel, dass sie hinter der offiziellen Version zurückbleiben oder von nachgelagertenModifikationen betroffen sind.
-
Sie erfordern nicht, dass du den Python-Interpreter baust, was - abgesehen davon, dass es kostbare Zeit kostet - die Einrichtung der Python-Build-Abhängigkeiten auf deinem System voraussetzt.
Binäre Installationsprogramme werden nur bis zum letzten Bugfix-Release jeder Python-Version bereitgestellt, das etwa 18 Monate nach der Erstveröffentlichung erfolgt. Sicherheitsupdates für ältere Versionen werden dagegen nur als Quellcode zur Verfügung gestellt. Wenn du Python nicht aus dem Quellcode erstellen möchtest,4 kannst du eine der ausgezeichneten Python Standalone Builds verwenden, eine Sammlung von in sich abgeschlossenen, sehr portablen Python-Distributionen.
Wenn du die Binärinstallationsprogramme von python.org verwendest, liegt es an dir, deine Python-Installationen auf dem neuesten Stand zu halten. Neue Versionen werden an vielen Stellen angekündigt, unter anderem im Python-Blog und imPython-Diskurs. Wenn du ein Bugfix-Release für eine Python-Version installierst, die bereits auf deinem System vorhanden ist, ersetzt es die bestehende Installation. Dadurch bleiben Projekte und Entwicklertools auf der aktualisierten Python-Version erhalten und sollten nahtlos ineinander übergehen.
Wenn du eine neue Version von Python installierst, solltest du die folgenden zusätzlichen Schritte beachten:
-
Aktiviere die Option, den neuen Python zur Umgebungsvariablen
PATH
hinzuzufügen. -
Entferne die vorherige Python-Version von
PATH
. Du kannst die Umgebungsvariablen für dein Konto mit dem Werkzeug Systemeinstellungen bearbeiten, das Teil von Windows ist. -
Vielleicht möchtest du auch einige deiner Entwicklerwerkzeuge neu installieren, um sicherzustellen, dass sie mit der neuesten Python-Version laufen.
Irgendwann erreicht eine Python-Version das Ende ihrer Lebensdauer und du möchtest sie vielleicht deinstallieren, um Ressourcen freizugeben. Du kannst eine bestehende Installation mit dem Tool Installierte Apps entfernen. Wähle die Aktion Deinstallieren, um den Eintrag in der Liste der installierten Software zu löschen. Beachte, dass das Entfernen einer Python-Version Projekte und Tools beschädigt, die diese Version noch verwenden, daher solltest du diese vorher auf ein neueres Python aktualisieren.
Der Python Launcher für Windows
Die Python-Entwicklung unter Windows ist eine Besonderheit , da die Werkzeuge Python-Installationen über die Windows-Registrierung finden können. Der Python Launcher für Windows macht sich dies zunutze, um einen einzigen Einstiegspunkt für Interpreter auf dem System zu bieten. Es ist ein Dienstprogramm, das jeder python.org-Version beiliegt und mit Python-Dateierweiterungen verknüpft ist, sodass du Skripte aus dem Windows-Dateiexplorer starten kannst.
Anwendungen mit einem Doppelklick zu starten ist praktisch, aber der Python Launcher ist am leistungsfähigsten, wenn du ihn über eine Eingabeaufforderung aufrufst. Öffne ein PowerShell-Fenster und führe den Befehl py
aus, um eine interaktive Sitzung zu starten:
> py Python 3.12.2 (tags/v3.12.2:6abddd9, Feb 6 2024, 21:26:36) [...] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Standardmäßig wählt der Python Launcher die zuletzt auf dem System installierte Version von Python aus. Es ist wichtig zu wissen, dass diese Version nicht unbedingt mit derzuletzt auf dem System installierten Version identisch ist. Das ist gut, denn du willst nicht, dass sich deine Standard-Python-Version ändert, wenn du ein Bugfix-Release für eine ältere Version installierst.
Wenn du eine bestimmte Version von , dem Interpreter, starten möchtest, kannst du die Feature-Version als Kommandozeilenoption übergeben:
> py -3.11 Python 3.11.8 (tags/v3.11.8:db85d51, Feb 6 2024, 22:03:32) [...] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Alle verbleibenden Argumente an py
werden an den ausgewählten Interpreter weitergeleitet. Schauen wir uns an, wie du die Versionen von zwei Interpretern auf dem System anzeigen würdest:
> py -V Python 3.12.2 > py -3.11 -V Python 3.11.8
Mit demselben Mechanismus kannst du ein Skript auf einem bestimmten Interpreter ausführen:
> py -3.11 path\to\script.py
Hinweis
Aus historischen Gründen prüft py
auch die erste Zeile des Skripts, um zu sehen, ob dort eine Version angegeben ist. Die kanonische Form ist #!/usr/bin/env python3
, die py -3
entspricht und auf allen wichtigen Plattformen funktioniert.
Wie du gesehen hast, verwendet der Python Launcher standardmäßig die neueste Version auf dem System. Es gibt eine Ausnahme von dieser Regel: Wenn eine virtuelle Umgebung aktiv ist, verwendet py
standardmäßig den Interpreter der virtuellen Umgebung.5
Wenn du eine Vorabversion von Python installierst, verwendet der Python Launcher diese als Standardinterpreter anstelle der aktuellen Version - schließlich ist es die neueste Version auf dem System. In diesem Fall solltest du die Standardeinstellung außer Kraft setzen, indem du die Umgebungsvariablen PY_PYTHON
und PY_PYTHON3
auf die aktuelle Version setzt:
> setx PY_PYTHON 3.12 > setx PY_PYTHON3 3.12
Starte die Konsole neu, damit die Einstellung wirksam wird. Vergiss nicht, diese Variablen zu entfernen, wenn du von der Vorabversion auf die endgültige Version umsteigst.
Um unsere kurze Tour durch den Python Launcher abzuschließen, verwende den Befehl py --list
, um die Interpreter auf deinem System aufzulisten:
> py --list -V:3.13 Python 3.13 (64-bit) -V:3.12 * Python 3.12 (64-bit) -V:3.11 Python 3.11 (64-bit) -V:3.10 Python 3.10 (64-bit) -V:3.9 Python 3.9 (64-bit) -V:3.8 Python 3.8 (64-bit)
In dieser Liste markiert das Sternchen die Standardversion von Python.
Tipp
Auch wenn du den Python Launcher immer selbst verwendest, solltest du deinePATH
auf dem neuesten Stand halten. Einige Tools von Drittanbietern führen den Befehl python.exe
direkt aus - du willst nicht, dass sie eine veraltete Python-Version verwenden oder auf das Microsoft Store-Shim zurückgreifen.
Python auf macOS installieren
Du kannst Python auf macOS auf verschiedene Arten installieren. In diesem Abschnitt werfe ich einen Blick auf den Homebrew-Paketmanager und die offiziellen Installationsprogramme von python.org. Beide bieten Multiversions-Binärdistributionen von Python. Einige Installationsmethoden, die unter Linux üblich sind - wie z. B. pyenv - funktionieren auch unter macOS. Der Paketmanager Conda unterstützt sogar Windows, macOS und Linux. Ich werde in späteren Abschnitten auf sie eingehen.
Selbstgebautes Python
Homebrew ist ein Drittanbieter-Paketmanager für macOS und Linux. Er bietet eineOverlay-Distribution, eine quelloffene Software-Sammlung, die du über das bestehende Betriebssystem installierst. Die Installation des Paketmanagers ist ganz einfach; eine Anleitung findest du auf der offiziellen Website.
Homebrew vertreibt Pakete für jede gewartete Version von Python. Verwende die brew
Kommandozeilenschnittstelle, um sie zu verwalten:
brew install python@3.x
-
Installiere eine neue Python-Version.
brew upgrade python@3.x
-
Aktualisiere eine Python-Version auf eine Wartungsversion.
brew uninstall python@3.x
-
Deinstalliere eine Python-Version.
Hinweis
Wann immer du Namen siehst wie python3.x
oderpython@3.x
in diesem Abschnitt siehst, ersetze3.x
durch die tatsächliche Version des Features. Verwende zum Beispiel python3.12
und python@3.12
für Python 3.12.
Es kann sein, dass du bereits einige Python-Versionen für andere Homebrew-Pakete installiert hast, die von ihnen abhängen. Trotzdem ist es wichtig, dass du jede Version explizit installierst. Automatisch installierte Pakete werden möglicherweise gelöscht, wenn du brew autoremove
ausführst, um die Ressourcen aufzuräumen.
Homebrew platziert einen python3.x
Befehl für jede Version auf deinem PATH
sowie einen python3
Befehl für das Haupt-Python-Paket, das entweder die aktuelle oder die vorherige stabile Version sein kann. Du solltest diesen Befehl überschreiben, um sicherzustellen, dass python3
auf die neueste Version verweist. Frag zuerst den Paketmanager nach dem Installationsstamm (der plattformabhängig ist):
$ brew --prefix python@3.12 /opt/homebrew/opt/python@3.12
Als Nächstes fügst du das bin-Verzeichnis aus dieser Installation deiner PATH
hinzu. Hier ist ein Beispiel, das mit der Bash-Shell funktioniert:
export
PATH
=
"/opt/homebrew/opt/python@3.12/bin:
$PATH
"
Homebrew hat einige Vorteile gegenüber den offiziellen python.org Installern:
-
Du kannst die Kommandozeile verwenden, um Python-Versionen zu installieren, zu aktualisieren und zu deinstallieren.
-
Homebrew enthält Sicherheitsversionen für ältere Versionen - im Gegensatz dazu werdenPython.org-Installer nur bis zur letzten Bugfix-Version bereitgestellt.
-
Homebrew Python ist eng mit dem Rest der Distribution integriert. Insbesondere kann der Paketmanager Python-Abhängigkeiten wie OpenSSL befriedigen. Das gibt dir die Möglichkeit, sie bei Bedarf unabhängig zu aktualisieren.
Auf der anderen Seite hat Homebrew Python auch einige Einschränkungen:
-
Homebrew packt keine Vorabversionen von kommenden Python-Versionen.
-
Die Pakete hinken in der Regel ein paar Tage oder Wochen hinter den offiziellen Veröffentlichungen hinterher. Sie enthalten auch einige nachgelagerte Änderungen, die aber durchaus sinnvoll sind. Homebrew trennt zum Beispiel Module, die mit grafischen Benutzeroberflächen (GUI) zu tun haben, vom Hauptpaket Python.
-
Du kannst Python-Pakete nicht systemweit installieren und deinstallieren, es sei denn, sie sind auch als Homebrew-Pakete verfügbar. (Unter "Virtuelle Umgebungen" erfährst du, warum du für die Entwicklung sowieso keine Pakete systemweit installieren solltest).
-
Homebrew aktualisiert Python automatisch auf Wartungsversionen und zwar auf eine Art und Weise, die virtuelle Umgebungen, die auf der vorherigen Version installiert sind, zerstören kann.6
Tipp
Ich persönlich empfehle Hatch oder Rye gegenüber Homebrew für die Verwaltung von Python unter macOS (siehe "A Brave New World: Installing with Hatch and Rye"). Verwende die python.org-Installer, um deinen Code gegen Vorabversionen zu testen.
Die python.org Installer
Das Python-Kernteam stellt offizielle binäre Installationsprogramme imBereich Downloads für macOS auf der Python-Website zur Verfügung. Lade den 64-Bit Universal2-Installer für die Version herunter, die du installieren möchtest. Die Universal2-Binärdateien des Interpreters laufen sowohl auf Apple- als auch auf Intel-Chips.7
Für die Entwicklung von Multiversionen empfehle ich eine benutzerdefinierte Installation - suche nach der SchaltflächeAnpassen im Installer-Dialog. Deaktiviere in der daraufhin angezeigten Liste der installierbaren Komponenten die Unix-Befehlszeilenwerkzeuge und den Shell-Profil-Updater. Beide Optionen sind dazu gedacht, den Interpreter und einige andere Befehle auf deiner PATH
zu installieren.8 Stattdessen bearbeitest du dein Shell-Profil manuell. Füge das Verzeichnis/Library/Frameworks/Python.framework/Versions/3.x/bin zu PATH
hinzu und ersetze3.x durch die aktuelle Funktionsversion. Achte darauf, dass die aktuelle stabile Version an der Spitze von PATH
steht.
Hinweis
Nachdem du eine Python-Version installiert hast, führe den Befehl Install Certificates im Ordner /Applications/Python 3.x/ aus. Dieser Befehl installiert Mozillas kuratierte Sammlung von Root-Zertifikaten, die benötigt werden, um sichere Internetverbindungen über Python herzustellen.
Wenn du ein Bugfix-Release für eine Python-Version installierst, die bereits auf deinem System vorhanden ist, ersetzt es die bestehende Installation. Du kannst eine Python-Version deinstallieren, indem du diese beiden Verzeichnisse entfernst:
-
/Library/Frameworks/Python.framework/Versionen/3.x/
-
/Programme/Python 3.x/
Python unter Linux installieren
Das Python-Kernteam bietet keine Binärinstallationsprogramme für Linux an. Im Allgemeinen ist die bevorzugte Methode zur Installation von Software auf Linux-Distributionen die Verwendung des offiziellen Paketmanagers. Bei der Installation von Python für die Entwicklung gilt dies jedoch nicht uneingeschränkt - hier gibt es einige wichtige Vorbehalte:
-
Das System-Python in einer Linux-Distribution kann ziemlich alt sein und nicht alle Distributionen enthalten alternative Python-Versionen in ihren Haupt-Paketdepots.
-
Linux-Distributionen haben verbindliche Regeln dafür, wie Anwendungen und Bibliotheken gepackt werden dürfen. Die Python-Richtlinie von Debian schreibt zum Beispiel vor, dass das Standardmodul
ensurepip
in einem separaten Paket ausgeliefert werden muss. Daher kannst du auf einem Standard-Debian-System keine virtuellen Umgebungen erstellen (eine Situation, die normalerweise durch die Installation des Paketspython3-full
behoben wird). -
Das wichtigste Python-Paket in einer Linux-Distribution dient als Grundlage für andere Pakete, die einen Python-Interpreter benötigen. Diese Pakete können kritische Teile des Systems enthalten, wie z. B. Fedoras Paketmanager DNF. Die Distributionen wenden daher Sicherheitsmaßnahmen an, um die Integrität des Systems zu schützen; so verhindern die meisten Distributionen beispielsweise, dass du Pakete systemweit mit pip installierst oder deinstallierst.
In den nächsten Abschnitten werfe ich einen Blick auf die Installation von Python auf zwei großen Linux-Distributionen, Fedora und Ubuntu. Danach gehe ich auf einige generische Installationsmethoden ein, die nicht den offiziellen Paketmanager verwenden: Homebrew, Nix, pyenv und Conda. Außerdem stelle ich dir den Python Launcher for Unix vor, ein Drittanbieterpaket, das das Dienstprogramm py
auf Linux, macOS und ähnliche Systeme bringen soll.
Fedora Linux
Fedora ist eine Open-Source-Linux-Distribution , die hauptsächlich von Red Hat gesponsert wird und die Upstream-Quelle für Red Hat Enterprise Linux (RHEL) ist. Fedora ist für seine hervorragende Python-Unterstützung bekannt, und Red Hat beschäftigt mehrere Python-Entwickler.
Python ist auf Fedora vorinstalliert und du kannst weitere Python-Versionen mit DNF installieren:
sudo dnf install python3.x
-
Installiere eine neue Python-Version.
sudo dnf upgrade python3.x
-
Aktualisiere eine Python-Version auf eine Wartungsversion.
sudo dnf remove python3.x
-
Deinstalliere eine Python-Version.
Fedora hat Pakete für alle aktiven Versionen und Vorabversionen von CPython, der Referenzimplementierung von Python, sowie Pakete mit alternativen Implementierungen wie PyPy. Eine bequeme Abkürzung um alle diese Pakete auf einmal zu installieren, ist die Installation des Pakets tox
:
$ sudo dnf install tox
Falls du dich wunderst: Tox ist ein Automatisierungstool für Tests , mit dem du ganz einfach eine Testsuite gegen mehrere Python-Versionen laufen lassen kannst; sein Fedora-Paket enthält die meisten verfügbaren Interpreter als empfohlene Abhängigkeiten. Tox ist auch der geistige Vorfahre von Nox, dem Thema von Kapitel 8.
Ubuntu Linux
Ubuntu ist eine beliebte Linux-Distribution , die auf Debian basiert und von Canonical Ltd. finanziert wird. Ubuntu liefert nur eine einzige Version von Python in seinen Haupt-Repositories aus; andere Versionen von Python, einschließlich Vorabversionen, werden über einPersonal Package Archive (PPA) bereitgestellt. Ein PPA ist ein von der Community gepflegtes Software-Repository auf Launchpad, der von Canonical betriebenen Plattform für Software-Kollaboration.
Dein erster Schritt auf einem Ubuntu-System sollte sein, das deadsnakes
PPA hinzuzufügen:
$ sudo apt update && sudo apt install software-properties-common $ sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt update
Du kannst jetzt Python-Versionen mit , dem APT-Paketmanager, installieren:
sudo apt install python3.x-full
-
Installiere eine neue Python-Version.
sudo apt upgrade python3.x-full
-
Aktualisiere eine Python-Version auf eine Wartungsversion.
sudo apt remove python3.x-full
-
Deinstalliere eine Python-Version.
Tipp
Erinnere dich immer daran, das Suffix -full
anzugeben, wenn du Python unter Debian und Ubuntu installierst. Die python3.x-full
Pakete bringen die gesamte Standardbibliothek und aktuelle Root-Zertifikate mit. Sie stellen vor allem sicher, dass du virtuelle Umgebungen erstellen kannst.
Andere Linux-Distributionen
Was tust du, wenn deine Linux-Distribution nicht mehrere Python-Versionen mitliefert? Die traditionelle Antwort lautet: "Erstelle dein eigenes Python." Das mag beängstigend klingen, aber wir werden in"Python mit pyenv installieren" sehen, wie einfach das Bauen von Python heutzutage geworden ist. Es stellt sich jedoch heraus, dass es nicht die einzige Möglichkeit ist, Python aus dem Quellcode zu erstellen. Mehrere plattformübergreifende Paketmanager bieten Binärpakete für Python an.
Die Homebrew-Distribution (siehe "Homebrew Python") ist unter für Linux und macOS verfügbar, und das meiste, was ich oben gesagt habe, gilt auch für Linux. Der Hauptunterschied zwischen den beiden Plattformen ist das Installationsverzeichnis: Homebrew unter Linux installiert die Pakete standardmäßig unter /home/linuxbrew/.linuxbrew statt unter /opt/homebrew. Behalte dies im Hinterkopf, wenn du die Python-Installationen von Homebrew zu deinem PATH
hinzufügst.
Ein beliebter plattformübergreifender Weg, Python zu installieren, ist die Anaconda-Distribution, die auf wissenschaftliches Rechnen ausgerichtet ist und Windows, macOS und Linux unterstützt. Ich werde Anaconda am Ende dieses Kapitels in einem eigenen Abschnitt behandeln (siehe"Python von Anaconda installieren").
Der Python Launcher für Unix
Der Python Launcher für Unix ist eine Portierung des offiziellen py
Dienstprogramms auf Linux und macOS sowie auf alle anderen Betriebssysteme, die die Programmiersprache Rust unterstützen. Sein Hauptvorteil ist, dass er eine einheitliche, plattformübergreifende Methode zum Starten von Python bietet, mit einer klar definierten Voreinstellung, wenn keine Version angegeben wird: der neueste Interpreter auf dem System.
Der Befehl py
ist eine bequeme, portable Methode zum Starten von Interpretern, die einige Fallstricke des direkten Aufrufs von Python umgeht (siehe "Python-Interpreter finden"). Aus diesem Grund werde ich ihn in diesem Buch durchgehend verwenden. Du kannst das Paketpython-launcher
mit einer Reihe von Paketmanagern installieren, darunter Homebrew, DNF und Cargo.
Der Python Launcher für Unix findet die Interpreter, indem er die Umgebungsvariable PATH
nach pythonx.y
Befehlen. Ansonsten funktioniert er ähnlich wie sein Pendant für Windows (siehe"Der Python Launcher für Windows"). Während py
von sich aus die neueste Python-Version startet, kannst du auch eine bestimmte Version anfordern - py -3.12
ist zum Beispiel gleichbedeutend mit python3.12
.
Im Folgenden siehst du eine Beispielsitzung mit dem macOS-System ausAbbildung 1-2. (Python 3.13 war zum Zeitpunkt der Erstellung dieses Artikels eine Vorabversion, daher habe ich den Standardinterpreter geändert, indem ich PY_PYTHON
undPY_PYTHON3
auf 3.12
gesetzt habe).
$ py -V 3.12.1 $ py -3.11 -V 3.11.7 $ py --list 3.13 │ /Library/Frameworks/Python.framework/Versions/3.13/bin/python3.13 3.12 │ /opt/homebrew/bin/python3.12 3.11 │ /opt/homebrew/bin/python3.11 3.10 │ /opt/homebrew/bin/python3.10
Wenn eine virtuelle Umgebung aktiv ist, verwendet py
standardmäßig den Interpreter in dieser Umgebung und nicht den systemweiten Interpreter (siehe"Virtuelle Umgebungen"). Eine spezielle Regel im Python Launcher für Unix macht die Arbeit mit virtuellen Umgebungen bequemer: Wenn das aktuelle Verzeichnis (oder eines seiner Eltern) eine virtuelle Umgebung mit dem Standardnamen .venv enthält, musst du sie nicht explizit aktivieren.
Du kannst viele Tools von Drittanbietern ausführen, indem du ihren Importnamen an die Option -m
interpreter übergibst. Angenommen, du hast pytest (ein Test-Framework) auf mehreren Python-Versionen installiert. Mit py -m pytest
kannst du bestimmen, welcher Interpreter das Tool ausführen soll. Im Gegensatz dazu verwendet pytest
den Befehl, der zufällig als erstes auf deiner PATH
erscheint.
Wenn du py
mit einem Python-Skript aufrufst, aber keine Version angibst, untersucht py
die erste Zeile des Skripts auf einen Shebang - eineZeile, die den Interpreter für das Skript angibt. Halte dich hier an die kanonische Form: #!/usr/bin/env
python3
. Einstiegs-Skripte sind ein nachhaltigerer Weg, um ein Skript mit einem bestimmten Interpreter zu verknüpfen, da Paket-Installer den richtigen Interpreter-Pfad während der Installation generieren können (siehe "Einstiegs-Skripte").
Python mit pyenv installieren
Pyenv ist ein Python-Versionsmanager für macOS und Linux. Es enthält einBuild-Tool - auchals eigenständiges Programm mit dem Namen python-build
-, das Python-Versionen herunterlädt, baut und in deinem Home-Verzeichnis installiert. Pyenv ermöglicht es dir, diese Installationen global, pro Projektverzeichnis oder pro Shell-Sitzung zu aktivieren und zu deaktivieren.
Hinweis
In diesem Abschnitt wirst du pyenv als Build-Tool verwenden. Wenn du pyenv als Versionsverwaltung nutzen möchtest, findest du in deroffiziellen Dokumentation weitere Schritte zur Einrichtung. Auf einige der Kompromisse gehe ich in "Python-Versionen mit pyenv verwalten" ein.
Der beste Weg, pyenv auf macOS und Linux zu installieren, ist mit Homebrew:
$ brew install pyenv sqlite3 xz zlib tcl-tk
Dieser Befehl installiert nicht nur pyenv selbst, sondern auch die Build-Abhängigkeiten von Python. Wenn du eine andere Installationsmethode verwendest, findest du impyenv-Wiki plattformspezifische Anweisungen, wie du deine Build-Umgebung einrichtest.
Zeige die verfügbaren Python-Versionen mit dem folgenden Befehl an:
$ pyenv install --list
Die Liste der Interpreter ist beeindruckend. Sie deckt nicht nur alle aktiven Funktionsversionen von Python ab, sondern enthält auch Vorabversionen, unveröffentlichte Entwicklungsversionen, fast alle Punktversionen , die in den letzten zwei Jahrzehnten veröffentlicht wurden, und eine Fülle alternativer Implementierungen wie PyPy, GraalPy, MicroPython, Jython, IronPython und Stackless Python.
Du kannst jede dieser Versionen bauen und installieren, indem du sie an pyenv
install
übergibst:
$ pyenv install 3.x.y
Wenn du pyenv als reines Build-Tool verwendest, wie wir es hier tun, musst du jede Installation manuell zu PATH
hinzufügen. Du kannst den Speicherort mit dem Befehlpyenv prefix 3.x.y
und hängst /bin daran an. Hier ist ein Beispiel für die Bash-Shell:
export
PATH
=
"
$HOME
/.pyenv/versions/3.x.y/bin:
$PATH
"
Wenn du eine Wartungsversion mit pyenv installierst, werden bestehende virtuelle Umgebungen und Entwicklertools auf derselben Funktionsversion nicht aktualisiert, sodass du diese Umgebungen mit der neuen Version neu erstellen musst.
Wenn du eine Anlage nicht mehr brauchst, kannst du sie wie folgt entfernen:
$ pyenv uninstall 3.x.y
Standardmäßig aktiviert pyenv bei der Erstellung des Interpreters weder die profilgesteuerte Optimierung (PGO) noch die Link-Time-Optimierung (LTO). Laut derPython Performance Benchmark Suite können diese Optimierungen zu einer erheblichen Beschleunigung von CPU-gebundenen Python-Programmen führen - zwischen 10 und 20 %. Du kannst sie unter mit der UmgebungsvariablenPYTHON_CONFIGURE_OPTS
aktivieren:
$ export PYTHON_CONFIGURE_OPTS='--enable-optimizations --with-lto'
Anders als die meisten macOS-Installationsprogramme verwendet pyenv standardmäßig ein POSIX-Installationslayout und nicht die für diese Plattform typischen Framework-Builds. Wenn du mit macOS arbeitest, empfehle ich dir, die Framework-Builds zu aktivieren, damit konsistent ist.9 Du kannst dies tun, indem du die Konfigurationsoption --enable-framework
zu der vorherigen Liste hinzufügst.
Python von Anaconda aus installieren
Anaconda ist eine Open-Source-Software-Distribution für wissenschaftliches Rechnen, die von Anaconda Inc. gepflegt wird. Ihr Herzstück ist Conda, ein plattformübergreifender Paketmanager für Windows, macOS und Linux. Conda Pakete können Software enthalten, die in einer beliebigen Sprache geschrieben wurde, z. B. C, C++, Python, R oder Fortran.
In diesem Abschnitt wirst du Conda verwenden, um Python zu installieren. Conda installiert keine Softwarepakete global auf deinem System. Jede Python-Installation ist in einer Conda-Umgebung enthalten und vom Rest deines Systems isoliert. Eine typische Conda-Umgebung konzentriert sich auf die Abhängigkeiten eines bestimmten Projekts, z. B. eine Reihe von Bibliotheken für maschinelles Lernen oder Data Science, von denen Python nur eine unter vielen ist.
Bevor du Conda-Umgebungen erstellen kannst, musst du eine Basisumgebung mit Conda selbst booten. Dafür gibt es mehrere Möglichkeiten: Du kannst die komplette Anaconda-Distribution installieren oder du kannst den Miniconda-Installer verwenden, der nur Conda und ein paar Kernpakete enthält. Sowohl Anaconda als auch Miniconda laden Pakete aus dem defaults channel herunter, der für die Nutzung in Unternehmen eine kommerzielle Lizenz erfordern kann.
Miniforge ist eine dritte Alternative. Sie ist ähnlich wie Miniconda, installiert aber Pakete aus dem von der Community gepflegten conda-forge-Kanal. Du kannst Miniforge mit den offiziellen Installationsprogrammen vonGitHub oder über Homebrew auf macOS und Linux installieren:
$ brew install miniforge
Conda benötigt die Shell-Integration, um den Suchpfad und die Eingabeaufforderung zu aktualisieren, wenn du eine Umgebung aktivierst oder deaktivierst. Wenn du Miniforge von Homebrew aus installiert hast, aktualisiere dein Shell-Profil mit dem Befehl conda init
mit dem Namen deiner Shell. Zum Beispiel:
$ conda init bash
In der Standardeinstellung aktiviert der Shell-Initialisierungscode die Basisumgebung automatisch in jeder Sitzung. Du möchtest dieses Verhalten vielleicht deaktivieren, wenn du auch Python-Installationen verwendest, die nicht von Conda verwaltet werden:
$ conda config --set auto_activate_base false
Der Windows-Installer aktiviert die Basisumgebung nicht global. Interagiere mit Conda über die Eingabeaufforderung im Windows-Startmenü.
Glückwunsch, du hast jetzt eine funktionierende Conda Installation auf deinem System! Lass uns Conda verwenden, um eine Umgebung mit einer bestimmten Python-Version zu erstellen:
$ conda create --name=name python=3.x
Bevor du diese Python-Installation nutzen kannst, musst du die Umgebung aktivieren:
$ conda activate name
Ein Upgrade von Python auf eine neuere Version ist einfach:
$ conda update python
Dieser Befehl wird in der aktiven Conda-Umgebung ausgeführt. Das Tolle an Conda ist, dass es Python nicht auf eine Version aktualisiert, die noch nicht von den Python-Bibliotheken in der Umgebung unterstützt wird.
Wenn du mit der Arbeit in der Umgebung fertig bist, deaktiviere sie wie folgt:
$ conda deactivate
Conda installiert Python nicht systemweit; vielmehr ist jede Python-Installation Teil einer isolierten Conda-Umgebung. Conda nimmt eine ganzheitliche Sicht auf eine Umgebung ein: Python ist nur eine Abhängigkeit deiner Projekte, gleichberechtigt mit Systembibliotheken, Python-Paketen von Drittanbietern und sogar Softwarepakete aus anderen Sprachökosystemen.
Eine schöne neue Welt: Installieren mit Hatch und Rye
Während ich dieses Buch geschrieben habe, haben die Python ProjektleiterRye und Hatch Unterstützung für die Installation von Python-Interpretern auf allen wichtigen Plattformen hinzugefügt. Beide verwenden Interpreter aus der Sammlung Python Standalone Builds und dem PyPy-Projekt.
Sowohl Rye als auch Hatch werden als eigenständige ausführbare Dateien vertrieben - du kannst sie also problemlos auf einem System installieren, auf dem Python noch nicht installiert ist. Eine ausführliche Installationsanleitung findest du in der offiziellen Dokumentation.
Mit Hatch kannst du alle CPython- und PyPy-Interpreter die mit deiner Plattform kompatibel sind, mit einem einzigen Befehl installieren:
$ hatch python install all
Dieser Befehl fügt auch die Installationsverzeichnisse zu deinem PATH
hinzu.10 Führe den Befehl mit der Option--update
erneut aus, um die Interpreter auf neuere Versionen zu aktualisieren. Hatch organisiert die Interpreter nach Funktionsversionen, so dass Patch-Versionen die bestehende Installation überschreiben.
Rye holt die Interpreter in das Verzeichnis ~/.rye/py. Normalerweise geschieht das hinter den Kulissen, wenn du die Abhängigkeiten deines Projekts synchronisierst. Es ist aber auch als eigener Befehl verfügbar:
$ rye fetch 3.12 $ rye fetch 3.11.8 $ rye fetch pypy@3.10
Das zweite Beispiel platziert den Interpreter in ~/.rye/py/cpython@3.11.8/bin(Linux und macOS). Du kannst in ein anderes Verzeichnis installieren, indem du die Option--target-path=<dir>
. Dies platziert den Interpreter in <dir>
unter Windows und<dir>/bin
auf Linux und macOS. Rye fügt den Interpreter nicht zu deinem PATH
hinzu, wenn du außerhalb eines Projekts arbeitest.
Ein Überblick über Installateure
Abbildung 1-3 gibt einen Überblick über die wichtigsten Python-Installationsmethoden für Windows, macOS und Linux.
Im Folgenden findest du einige Hinweise, wie du einen Installateur auswählen kannst:
-
In der Regel installierst du eigenständige Python-Builds mit Hatch.
-
Für wissenschaftliche Berechnungen empfehle ich stattdessen Conda.
-
Hol dir die Vorabversionen von python.org, wenn du mit Windows oder macOS arbeitest. Unter Linux kannst du sie mit pyenv aus den Quellen bauen.
-
Unter Fedora Linux solltest du immer DNF verwenden.
-
Unter Ubuntu Linux solltest du immer das deadsnakes PPA mit APT verwenden.
Entscheide dich für Nix auf macOS und Linux, wenn du einen reproduzierbaren Build von Python brauchst.
Zusammenfassung
In diesem Kapitel hast du gelernt, wie du Python-Installationen unter Windows, macOS und Linux verwalten kannst. Benutze den Python Launcher, um die auf deinem System installierten Interpreter auszuwählen. Überprüfe außerdem deinen Suchpfad, um sicherzustellen, dass du gut definierte python
und python3
Befehle hast.
Das nächste Kapitel befasst sich mit einer Python-Installation: ihrem Inhalt und ihrer Struktur und wie dein Code mit ihr interagiert. Außerdem erfährst du etwas über seine leichtgewichtigen Verwandten, die virtuellen Umgebungen, und die Werkzeuge, die sich um sie herum entwickelt haben.
1 CPython ist zwar die Referenzimplementierung von Python, aber es gibt noch eine ganze Reihe weiterer: leistungsorientierte Forks wie PyPy und Cinder, Neuimplementierungen wie RustPython und MicroPython und Portierungen auf andere Plattformen wie WebAssembly, Java und .NET.
2 Zum Zeitpunkt der Erstellung dieses Artikels Anfang 2024 enthält die langfristige Supportversion von Debian Linux gepatchte Versionen von Python 2.7.16 und 3.7.3 - beide wurden vor einem halben Jahrzehnt veröffentlicht. (Debians "Testing"-Distribution, die häufig für die Entwicklung verwendet wird, enthält eine aktuelle Version von Python).
3 Ab Python 3.13 werden Bugfix-Releases für zwei Jahre nach der ersten Veröffentlichung bereitgestellt.
4 Stack Overflow hat eine gute Schritt-für-Schritt-Anleitung zum Erstellen von Windows-Installationsprogrammen.
5 "Virtuelle Umgebungen" behandelt virtuelle Umgebungen im Detail. Für den Moment kannst du dir eine virtuelle Umgebung als eine flache Kopie einer vollständigen Python-Installation vorstellen, mit der du einen separaten Satz von Drittanbieter-Paketen installieren kannst.
6 Justin Mayer, "Homebrew Python Is Not For You", Februar 3, 2021.
7 Hast du einen Mac mit Apple-Silizium, aber Programme, die auf Intel-Prozessoren laufen müssen? Dann wird es dich freuen zu hören, dass die python.org-Installationsprogramme auch eine python3-intel64
Binärdatei mit dem x86_64
Befehlssatz bereitstellen. Dank der Rosetta-Übersetzungsumgebung von Apple kannst du es auf Apple-Silizium ausführen.
8 Die Unix-Befehlszeilenoption tools setzt symbolische Links in das Verzeichnis /usr/local/bin, was zu Konflikten mit Homebrew-Paketen und anderen Versionen von python.org führen kann. Ein symbolischer Link (Symlink) ist eine besondere Art von Datei, die auf eine andere Datei verweist, ähnlich wie eine Verknüpfung in Windows.
9 Aus historischen Gründen verwenden Framework-Builds einen anderen Pfad für das Site-Verzeichnis pro Benutzer, den Ort, an dem Pakete installiert werden, wenn du pip außerhalb einer virtuellen Umgebung und ohne administrative Rechte aufrufst. Dieses unterschiedliche Installationslayout kann verhindern, dass du ein zuvor installiertes Paket importieren kannst.
10 In einer zukünftigen Version wird Hatch auch Interpreter in die Windows-Registrierung aufnehmen, damit du sie mit dem Python Launcher verwenden kannst.
Get Hypermodern Python Tooling now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.