4. Python unter Windows

Dieses Dokument soll einen Überblick über Windows-spezifisches Verhalten geben, das Sie bei der Verwendung von Python unter Microsoft Windows kennen sollten.

Im Gegensatz zu den meisten Unix-Systemen und -Diensten enthält Windows keine systemgestützte Python-Installation. Stattdessen kann Python von verschiedenen Anbietern bezogen werden, einschließlich direkt vom CPython-Team. Jede Python-Distribution hat ihre eigenen Vor- und Nachteile, aber Konsistenz mit anderen Tools, die Sie verwenden, ist im Allgemeinen ein lohnenswerter Vorteil. Bevor Sie sich auf den hier beschriebenen Prozess festlegen, empfehlen wir, Ihre vorhandenen Tools zu untersuchen, ob diese Python direkt bereitstellen können.

Um Python vom CPython-Team zu beziehen, verwenden Sie den Python Install Manager. Dies ist ein eigenständiges Tool, das Python als globale Befehle auf Ihrem Windows-Computer verfügbar macht, sich in das System integriert und Updates im Laufe der Zeit unterstützt. Sie können den Python Install Manager von python.org/downloads oder über die Microsoft Store App herunterladen.

Sobald Sie den Python Install Manager installiert haben, kann der globale Befehl python von jedem Terminal aus verwendet werden, um Ihre aktuellste Python-Version zu starten. Diese Version kann sich im Laufe der Zeit ändern, wenn Sie verschiedene Versionen hinzufügen oder entfernen, und der Befehl py list zeigt an, welche aktuell ist.

Generell empfehlen wir, für jedes Projekt eine virtuelle Umgebung zu erstellen und <env>\Scripts\Activate in Ihrem Terminal auszuführen, um sie zu nutzen. Dies sorgt für Isolation zwischen Projekten, Konsistenz über die Zeit und stellt sicher, dass zusätzliche Befehle, die von Paketen hinzugefügt wurden, ebenfalls in Ihrer Sitzung verfügbar sind. Erstellen Sie eine virtuelle Umgebung mit python -m venv <env path>.

Wenn die Befehle python oder py nicht zu funktionieren scheinen, lesen Sie bitte den Abschnitt Fehlerbehebung unten. Manchmal sind zusätzliche manuelle Schritte erforderlich, um Ihren PC zu konfigurieren.

Abgesehen von der Verwendung des Python Install Managers kann Python auch als NuGet-Pakete bezogen werden. Weitere Informationen zu diesen Paketen finden Sie weiter unten unter Die nuget.org-Pakete.

Die einbettbaren Distributionen sind minimale Python-Pakete, die sich zum Einbetten in größere Anwendungen eignen. Sie können mit dem Python Install Manager installiert werden. Weitere Informationen zu diesen Paketen finden Sie weiter unten unter Das einbettbare Paket.

4.1. Python Install Manager

4.1.1. Installation

Der Python Install Manager kann aus der Microsoft Store App installiert oder von python.org/downloads heruntergeladen und installiert werden. Die beiden Versionen sind identisch.

Um über den Store zu installieren, klicken Sie einfach auf „Installieren“. Nachdem die Installation abgeschlossen ist, öffnen Sie ein Terminal und geben Sie python ein, um zu beginnen.

Um die von python.org heruntergeladene Datei zu installieren, doppelklicken Sie darauf und wählen Sie „Installieren“ oder führen Sie Add-AppxPackage <Pfad zur MSIX> in Windows PowerShell aus.

Nach der Installation sollten die Befehle python, py und pymanager verfügbar sein. Wenn Sie bereits vorhandene Python-Installationen haben oder Ihre PATH-Variable geändert haben, müssen Sie diese möglicherweise entfernen oder die Änderungen rückgängig machen. Weitere Hilfe zur Behebung nicht funktionierender Befehle finden Sie unter Fehlerbehebung.

Wenn Sie zum ersten Mal eine Runtime installieren, werden Sie wahrscheinlich aufgefordert, ein Verzeichnis zu Ihrer PATH hinzuzufügen. Dies ist optional, wenn Sie lieber den Befehl py verwenden möchten, wird aber für diejenigen angeboten, die den vollen Umfang von Aliases (wie python3.14.exe) verfügbar haben möchten. Das Verzeichnis ist standardmäßig %LocalAppData%\Python\bin, kann aber von einem Administrator angepasst werden. Klicken Sie auf Start und suchen Sie nach „Umgebungsvariablen für Ihr Konto bearbeiten“, um die Systemeinstellungen für das Hinzufügen des Pfads zu öffnen.

Jede von Ihnen installierte Python-Runtime hat ihr eigenes Verzeichnis für Skripte. Diese müssen ebenfalls zu PATH hinzugefügt werden, wenn Sie sie verwenden möchten.

Der Python Install Manager wird automatisch auf neue Releases aktualisiert. Dies hat keinen Einfluss auf installierte Python-Runtimes. Die Deinstallation des Python Install Managers deinstalliert keine Python-Runtimes.

Wenn Sie eine MSIX-Datei in Ihrem Kontext nicht installieren können, z. B. weil Sie Software für automatisierte Bereitstellung verwenden, die dies nicht unterstützt, oder weil Sie Windows Server 2019 anvisieren, finden Sie weitere Informationen unter Erweiterte Installation weiter unten.

4.1.2. Grundlegende Verwendung

Der empfohlene Befehl zum Starten von Python ist python, der entweder die vom zu startenden Skript angeforderte Version, eine aktive virtuelle Umgebung oder die Standardinstallation startet, die standardmäßig die neueste stabile Version ist, sofern nicht anders konfiguriert. Wenn keine Version explizit angefordert wird und überhaupt keine Runtimes installiert sind, wird die aktuellste Version automatisch installiert.

Für alle Szenarien mit mehreren Runtime-Versionen ist der empfohlene Befehl py. Dieser kann überall anstelle von python oder dem älteren py.exe Launcher verwendet werden. Standardmäßig verhält sich py wie python, erlaubt aber auch Kommandozeilenoptionen zur Auswahl einer bestimmten Version sowie Unterbefehle zur Verwaltung von Installationen. Diese werden unten detailliert beschrieben.

Da der Befehl py möglicherweise bereits von einer früheren Version belegt ist, gibt es auch einen eindeutigen Befehl pymanager. Skriptbasierte Installationen, die den Python Install Manager nutzen möchten, sollten pymanager in Betracht ziehen, da die Wahrscheinlichkeit von Konflikten mit bestehenden Installationen geringer ist. Der einzige Unterschied zwischen den beiden Befehlen besteht darin, dass bei Ausführung ohne Argumente py Ihren Standardinterpreter installiert und startet, während pymanager Hilfe anzeigt (pymanager exec ... bietet das gleiche Verhalten wie py ...).

Jeder dieser Befehle hat auch eine Fensterversion, die das Erstellen eines Konsolenfensters vermeidet. Dies sind pyw, pythonw und pymanagerw. Ein Befehl python3 ist ebenfalls enthalten, der dem Befehl python ähnelt. Er dient dazu, versehentliche Verwendungen des typischen POSIX-Befehls unter Windows abzufangen, ist aber nicht zur breiten Verwendung oder Empfehlung gedacht.

Um Ihre Standard-Runtime zu starten, führen Sie python oder py mit den Argumenten aus, die Sie an die Runtime übergeben möchten (wie Skriptdateien oder das zu startende Modul).

$> py
...
$> python my-script.py
...
$> py -m this
...

Die Standard-Runtime kann mit der Umgebungsvariable PYTHON_MANAGER_DEFAULT oder einer Konfigurationsdatei überschrieben werden. Informationen zu den Konfigurationseinstellungen finden Sie unter Konfiguration.

Um eine bestimmte Runtime zu starten, akzeptiert der Befehl py die Option -V:<TAG>. Diese Option muss vor allen anderen angegeben werden. Der Tag ist ein Teil oder die gesamte Kennung der Runtime; für die vom CPython-Team stammen, sieht er wie die Version aus, möglicherweise mit der Plattform. Zur Kompatibilität kann V: in Fällen weggelassen werden, in denen der Tag eine offizielle Veröffentlichung bezeichnet und mit 3 beginnt.

$> py -V:3.14 ...
$> py -V:3-arm64 ...

Runtimes von anderen Anbietern erfordern möglicherweise die Einbeziehung des *Unternehmens*. Dies sollte durch einen Schrägstrich vom Tag getrennt sein und kann ein Präfix sein. Die Angabe des Unternehmens ist optional, wenn es sich um PythonCore handelt, und die Angabe des Tags ist optional (aber nicht der Schrägstrich), wenn Sie die neueste Version von einem bestimmten Unternehmen wünschen.

$> py -V:Distributor\1.0 ...
$> py -V:distrib/ ...

Wenn keine Version angegeben ist, aber eine Skriptdatei übergeben wird, wird das Skript auf eine *Shebang-Zeile* untersucht. Dies ist ein spezielles Format für die erste Zeile einer Datei, das das Überschreiben des Befehls ermöglicht. Weitere Informationen finden Sie unter Shebang-Zeilen. Wenn keine Shebang-Zeile vorhanden ist oder diese nicht aufgelöst werden kann, wird das Skript mit der Standard-Runtime gestartet.

Wenn Sie sich in einer aktiven virtuellen Umgebung befinden, keine bestimmte Version angefordert haben und keine Shebang-Zeile vorhanden ist, ist die Standard-Runtime diese virtuelle Umgebung. In diesem Szenario wurde der Befehl python wahrscheinlich bereits überschrieben und keine dieser Prüfungen erfolgte. Dieses Verhalten stellt jedoch sicher, dass der Befehl py austauschbar verwendet werden kann.

Wenn Sie python oder py starten, aber keine Runtimes installiert haben und die angeforderte Version die Standardversion ist, wird diese automatisch installiert und dann gestartet. Andernfalls wird die angeforderte Version installiert, wenn eine automatische Installation konfiguriert ist (am wahrscheinlichsten durch Setzen von PYTHON_MANAGER_AUTOMATIC_INSTALL auf true) oder wenn die Formen py exec oder pymanager exec des Befehls verwendet wurden.

4.1.3. Hilfe zu Befehlen

Der Befehl py help zeigt die vollständige Liste der unterstützten Befehle zusammen mit ihren Optionen an. Jeder Befehl kann die Option -? erhalten, um seine Hilfe anzuzeigen, oder sein Name wird an py help übergeben.

$> py help
$> py help install
$> py install /?

Alle Befehle unterstützen einige gemeinsame Optionen, die von py help angezeigt werden. Diese Optionen müssen nach jedem Unterbefehl angegeben werden. Die Angabe von -v oder --verbose erhöht die angezeigte Ausgabe, und -vv erhöht sie für Debugging-Zwecke weiter. Die Angabe von -q oder --quiet reduziert die Ausgabe, und -qq reduziert sie weiter.

Die Option --config=<PFAD> ermöglicht die Angabe einer Konfigurationsdatei, um mehrere Einstellungen auf einmal zu überschreiben. Weitere Informationen zu diesen Dateien finden Sie unter Konfiguration weiter unten.

4.1.4. Auflisten von Runtimes

$> py list [-f=|--format=<FMT>] [-1|--one] [--online|-s=|--source=<URL>] [<TAG>...]

Die Liste der installierten Runtimes kann mit py list angezeigt werden. Ein Filter kann in Form eines oder mehrerer Tags (mit oder ohne Unternehmensspezifizierer) hinzugefügt werden, und jeder kann ein Präfix wie <, <=, >= oder > enthalten, um auf einen Bereich beschränkt zu werden.

Eine Reihe von Formaten werden unterstützt und können als Option --format=<FMT> oder -f <FMT> übergeben werden. Formate umfassen table (eine benutzerfreundliche Tabellenansicht), csv (kommagetrennte Tabelle), json (ein einzelner JSON-Blob), jsonl (ein JSON-Blob pro Ergebnis), exe (nur der ausführbare Pfad), prefix (nur der Präfix-Pfad).

Die Option --one oder -1 zeigt nur ein einziges Ergebnis an. Wenn die Standard-Runtime enthalten ist, ist es diese. Andernfalls wird das „beste“ Ergebnis angezeigt („beste“ ist bewusst vage definiert, wird aber in der Regel die neueste Version sein). Das von py list --one <TAG> angezeigte Ergebnis entspricht der Runtime, die von py -V:<TAG> gestartet würde.

Die Option --only-managed schließt Ergebnisse aus, die nicht vom Python Install Manager installiert wurden. Dies ist nützlich, um festzustellen, welche Runtimes über den Befehl py aktualisiert oder deinstalliert werden können.

Die Option --online ist kurz für die Übergabe von --source=<URL> mit der Standardquelle. Die Übergabe einer dieser Optionen durchsucht den Online-Index nach installierbaren Runtimes. Das von py list --online --one <TAG> angezeigte Ergebnis entspricht der Runtime, die von py install <TAG> installiert würde.

$> py list --online 3.14

Zur Kompatibilität mit dem alten Launcher werden die Befehle --list, --list-paths, -0 und -0p (z. B. py -0p) beibehalten. Sie erlauben keine zusätzlichen Optionen und erzeugen Legacy-formatierte Ausgabe.

4.1.5. Installation von Runtimes

$> py install [-s=|--source=<URL>] [-f|--force] [-u|--update] [--dry-run] [<TAG>...]

Neue Runtime-Versionen können mit py install hinzugefügt werden. Ein oder mehrere Tags können angegeben werden, und der spezielle Tag default kann verwendet werden, um die Standard-Runtime auszuwählen. Bereiche werden für die Installation nicht unterstützt.

Die Option --source=<URL> ermöglicht die Überschreibung des Online-Index, der zum Abrufen von Runtimes verwendet wird. Dies kann mit einem Offline-Index verwendet werden, wie in Offline-Installationen gezeigt.

Die Übergabe von --force ignoriert alle zwischengespeicherten Dateien und entfernt jede vorhandene Installation, um sie durch die angegebene zu ersetzen.

Die Übergabe von --update ersetzt vorhandene Installationen, wenn die neue Version neuer ist. Andernfalls bleiben sie erhalten. Wenn keine Tags mit --update angegeben werden, werden alle vom Python Install Manager verwalteten Installationen aktualisiert, wenn neuere Versionen verfügbar sind. Updates entfernen alle vorgenommenen Änderungen an der Installation, einschließlich global installierter Pakete, aber virtuelle Umgebungen funktionieren weiterhin.

Die Übergabe von --dry-run erzeugt Ausgabe und Protokolle, ändert jedoch keine Installationen.

Zusätzlich zu den oben genannten Optionen extrahiert die Option --target die Runtime in das angegebene Verzeichnis, anstatt eine normale Installation durchzuführen. Dies ist nützlich für das Einbetten von Runtimes in größere Anwendungen.

$> py install ... [-t=|--target=<PATH>] <TAG>

4.1.6. Offline-Installationen

Um Offline-Installationen von Python durchzuführen, müssen Sie zuerst einen Offline-Index auf einer Maschine erstellen, die Netzwerkzugriff hat.

$> py install --download=<PATH> ... <TAG>...

Die Option --download=<PFAD> lädt die Pakete für die angegebenen Tags herunter und erstellt ein Verzeichnis, das diese und eine index.json-Datei enthält, die für spätere Installationen geeignet ist. Dieses gesamte Verzeichnis kann auf die Offline-Maschine verschoben und zur Installation einer oder mehrerer gebündelter Runtimes verwendet werden.

$> py install --source="<PATH>\index.json" <TAG>...

Der Python Install Manager kann installiert werden, indem sein Installer heruntergeladen und auf eine andere Maschine verschoben wird, bevor er installiert wird.

Alternativ können die ZIP-Dateien in einem Offline-Indexverzeichnis einfach auf eine andere Maschine übertragen und extrahiert werden. Dies registriert die Installation in keiner Weise, und sie muss daher direkt durch Verweis auf die ausführbaren Dateien im extrahierten Verzeichnis gestartet werden, ist aber in Fällen, in denen die Installation des Python Install Managers nicht möglich oder praktisch ist, manchmal ein vorzuziehender Ansatz.

Auf diese Weise können Python-Runtimes auf einer Maschine ohne Internetzugang installiert und verwaltet werden.

4.1.7. Deinstallation von Runtimes

$> py uninstall [-y|--yes] <TAG>...

Runtimes können mit dem Befehl py uninstall entfernt werden. Ein oder mehrere Tags müssen angegeben werden. Bereiche sind hier nicht unterstützt.

Die Option --yes umgeht die Bestätigungsaufforderung vor der Deinstallation.

Anstatt Tags einzeln zu übergeben, kann die Option --purge angegeben werden. Dies entfernt alle vom Python Install Manager verwalteten Runtimes, einschließlich der Bereinigung des Startmenüs, der Registrierung und aller Download-Caches. Nicht vom Python Install Manager installierte Runtimes bleiben unberührt, ebenso wenig wie manuell erstellte Konfigurationsdateien.

$> py uninstall [-y|--yes] --purge

Der Python Install Manager kann über die Windows-Einstellung "Installierte Apps" deinstalliert werden. Dies entfernt keine Runtimes, und diese bleiben weiterhin nutzbar, allerdings werden die globalen Befehle python und py entfernt. Die Neuinstallation des Python Install Managers ermöglicht es Ihnen, diese Runtimes wieder zu verwalten. Um alle Python-Runtimes vollständig zu bereinigen, führen Sie --purge aus, bevor Sie den Python Install Manager deinstallieren.

4.1.8. Konfiguration

Der Python Install Manager wird mit einer Hierarchie von Konfigurationsdateien, Umgebungsvariablen, Befehlszeilenoptionen und Registrierungseinstellungen konfiguriert. Im Allgemeinen haben Konfigurationsdateien die Fähigkeit, alles zu konfigurieren, einschließlich des Speicherorts anderer Konfigurationsdateien, während Registrierungseinstellungen nur für Administratoren bestimmt sind und Konfigurationsdateien überschreiben. Befehlszeilenoptionen überschreiben alle anderen Einstellungen, aber nicht jede Option ist verfügbar.

Dieser Abschnitt beschreibt die Standardwerte, aber seien Sie sich bewusst, dass modifizierte oder überschriebene Installationen Einstellungen anders auflösen können.

Eine globale Konfigurationsdatei kann von einem Administrator konfiguriert werden und wird zuerst gelesen. Die Benutzerkonfigurationsdatei wird unter %AppData%\Python\pymanager.json (standardmäßig) gespeichert und als nächstes gelesen, wobei alle Einstellungen aus früheren Dateien überschrieben werden. Eine zusätzliche Konfigurationsdatei kann als Umgebungsvariable PYTHON_MANAGER_CONFIG oder als Befehlszeilenoption --config (aber nicht beide) angegeben werden.

Die folgenden Einstellungen sind diejenigen, die wahrscheinlich im normalen Gebrauch geändert werden. Spätere Abschnitte listen diejenigen auf, die für die administrative Anpassung vorgesehen sind.

Standard-Konfigurationsoptionen

Konfigurationsschlüssel

Umgebungsvariable

Beschreibung

default_tag

PYTHON_MANAGER_DEFAULT

Die bevorzugte Standardversion zum Starten oder Installieren. Standardmäßig wird dies als die neueste nicht-Pre-Release-Version des CPython-Teams interpretiert.

default_platform

PYTHON_MANAGER_DEFAULT_PLATFORM

Die bevorzugte Standardplattform zum Starten oder Installieren. Dies wird als Suffix für den angegebenen Tag behandelt, so dass py -V:3.14 eine Installation für 3.14-64 bevorzugen würde, wenn diese existiert (und default_platform -64 ist), aber 3.14 verwenden würde, wenn keine getaggte Installation existiert.

logs_dir

PYTHON_MANAGER_LOGS

Der Speicherort, an dem Protokolldateien geschrieben werden. Standardmäßig %TEMP%.

automatic_install

PYTHON_MANAGER_AUTOMATIC_INSTALL

True, um automatische Installationen zu ermöglichen, wenn eine bestimmte Runtime zum Starten angegeben wird. Standardmäßig True.

include_unmanaged

PYTHON_MANAGER_INCLUDE_UNMANAGED

True, um Runtimes aufzulisten und zu starten, die nicht vom Python Install Manager installiert wurden, oder False, um sie auszuschließen. Standardmäßig True.

shebang_can_run_anything

PYTHON_MANAGER_SHEBANG_CAN_RUN_ANYTHING

True, um Shebangs in .py-Dateien zu erlauben, Anwendungen außer Python-Runtimes zu starten, oder False, um dies zu verhindern. Standardmäßig True.

log_level

PYMANAGER_VERBOSE, PYMANAGER_DEBUG

Legt die Standardausgabe-Ebene fest (0-50). Standardmäßig 20. Niedrigere Werte erzeugen mehr Ausgabe. Die Umgebungsvariablen sind boolesch und können während des Starts zusätzliche Ausgaben erzeugen, die später durch andere Konfigurationen unterdrückt werden.

confirm

PYTHON_MANAGER_CONFIRM

True, um bestimmte Aktionen vor der Ausführung zu bestätigen (z. B. Deinstallation), oder False, um die Bestätigung zu überspringen. Standardmäßig True.

install.source

PYTHON_MANAGER_SOURCE_URL

Überschreibt den Index-Feed, von dem neue Installationen bezogen werden.

list.format

PYTHON_MANAGER_LIST_FORMAT

Gibt das Standardformat für den Befehl py list an. Standardmäßig table.

Gepunktete Namen sollten in JSON-Objekten verschachtelt sein, z. B. würde list.format als {"list": {"format": "table"}} angegeben werden.

4.1.9. Shebang-Zeilen

Wenn die erste Zeile einer Skriptdatei mit #! beginnt, wird sie als „Shebang“-Zeile bezeichnet. Linux und andere Unix-ähnliche Betriebssysteme haben native Unterstützung für solche Zeilen, und sie werden üblicherweise auf solchen Systemen verwendet, um anzugeben, wie ein Skript ausgeführt werden soll. Die Befehle python und py ermöglichen die Verwendung derselben Einrichtungen für Python-Skripte unter Windows.

Um Shebang-Zeilen in Python-Skripten zwischen Unix und Windows portierbar zu machen, werden eine Reihe von „virtuellen“ Befehlen unterstützt, um anzugeben, welcher Interpreter verwendet werden soll. Die unterstützten virtuellen Befehle sind

  • /usr/bin/env <ALIAS>

  • /usr/bin/env -S <ALIAS>

  • /usr/bin/<ALIAS>

  • /usr/local/bin/<ALIAS>

  • <ALIAS>

Wenn die erste Zeile Ihres Skripts beispielsweise mit

#! /usr/bin/python

Die Standard-Python-Installation oder eine aktive virtuelle Umgebung wird gefunden und verwendet. Da viele Python-Skripte, die für Unix geschrieben wurden, bereits diese Zeile enthalten, sollten Sie feststellen, dass diese Skripte vom Launcher ohne Änderung verwendet werden können. Wenn Sie unter Windows ein neues Skript schreiben, das Sie hoffentlich unter Unix verwenden möchten, sollten Sie eine der Shebang-Zeilen verwenden, die mit /usr beginnen.

Jeder der oben genannten virtuellen Befehle kann <ALIAS> durch einen Alias aus einer installierten Laufzeit ersetzen. Das heißt, jeder Befehl, der im globalen Alias-Verzeichnis generiert wird (das Sie möglicherweise zu Ihrer PATH-Umgebungsvariablen hinzugefügt haben), kann in einer Shebang verwendet werden, auch wenn er nicht in Ihrer PATH enthalten ist. Dies ermöglicht die Verwendung von Shebangs wie /usr/bin/python3.12 zur Auswahl einer bestimmten Laufzeit.

Wenn keine Laufzeiten installiert sind oder wenn die automatische Installation aktiviert ist, wird die angeforderte Laufzeit bei Bedarf installiert. Informationen zu den Konfigurationseinstellungen finden Sie unter Konfiguration.

Die Form /usr/bin/env der Shebang-Zeile durchsucht auch die Umgebungsvariable PATH nach nicht erkannten Befehlen. Dies entspricht dem Verhalten des Unix-Programms env, das dieselbe Suche durchführt, aber bevorzugt bekannte Python-Befehle startet. Möglicherweise wird eine Warnung angezeigt, wenn nach beliebigen ausführbaren Dateien gesucht wird, und diese Suche kann durch die Konfigurationsoption shebang_can_run_anything deaktiviert werden.

Shebang-Zeilen, die keinem der Muster entsprechen, werden als *Windows*-ausführbare Pfade behandelt, die absolut sind oder relativ zum Verzeichnis sind, das die Skriptdatei enthält. Dies ist eine Erleichterung für reine Windows-Skripte, z. B. solche, die von einem Installer generiert wurden, da das Verhalten nicht mit Unix-Shells kompatibel ist. Diese Pfade können in Anführungszeichen gesetzt werden und mehrere Argumente enthalten, nach denen der Pfad zum Skript und zusätzliche Argumente angehängt werden. Diese Funktionalität kann durch die Konfigurationsoption shebang_can_run_anything deaktiviert werden.

Hinweis

Das Verhalten von Shebangs im Python-Installationsmanager unterscheidet sich geringfügig vom früheren Launcher py.exe, und die alten Konfigurationsoptionen gelten nicht mehr. Wenn Sie speziell auf das alte Verhalten oder die alte Konfiguration angewiesen sind, empfehlen wir, den Legacy-Launcher beizubehalten. Er kann unabhängig heruntergeladen und separat installiert werden. Der Befehl py des Legacy-Launchers hat Vorrang vor dem des PyManagers, und Sie müssen pymanager-Befehle zum Installieren und Deinstallieren verwenden.

4.1.10. Erweiterte Installation

Für Situationen, in denen eine MSIX nicht installiert werden kann, z. B. bei einigen älteren administrativen Verteilungsplattformen, ist ein MSI auf der Downloadseite von python.org verfügbar. Dieses MSI hat keine Benutzeroberfläche und kann nur Installationen pro Computer an seinem Standardort in "Program Files" durchführen. Es wird versucht, die System-PATH-Umgebungsvariable zu ändern, um diesen Installationsort einzuschließen, aber stellen Sie sicher, dass Sie dies in Ihrer Konfiguration überprüfen.

Hinweis

Windows Server 2019 ist die einzige Windows-Version, die von CPython unterstützt wird und MSIX nicht unterstützt. Für Windows Server 2019 sollten Sie das MSI verwenden.

Beachten Sie, dass das MSI-Paket keine Laufzeiten bündelt und daher nicht für Installationen in Offline-Umgebungen geeignet ist, ohne auch einen Offline-Installationsindex zu erstellen. Informationen zur Handhabung dieser Szenarien finden Sie unter Offline-Installationen und Administrative Konfiguration.

Die vom MSI installierten Laufzeiten werden mit denen geteilt, die von der MSIX installiert wurden, und sind alle nur pro Benutzer. Der Python-Installationsmanager unterstützt keine Installation von Laufzeiten pro Computer. Um eine Installation pro Computer zu emulieren, können Sie py install --target=<gemeinsamer Speicherort> als Administrator verwenden und eigene systemweite Änderungen an PATH, der Registrierung oder dem Startmenü vornehmen.

Wenn die MSIX installiert ist, aber Befehle nicht in der Umgebungsvariable PATH verfügbar sind, können sie unter %LocalAppData%\Microsoft\WindowsApps\PythonSoftwareFoundation.PythonManager_3847v3x7pw1km oder %LocalAppData%\Microsoft\WindowsApps\PythonSoftwareFoundation.PythonManager_qbz5n2kfra8p0 gefunden werden, je nachdem, ob sie von python.org oder über den Windows Store installiert wurden. Der direkte Aufruf der ausführbaren Datei aus "Program Files" wird nicht empfohlen.

Um den Python-Installationsmanager programmatisch zu installieren, ist es am einfachsten, WinGet zu verwenden, das in allen unterstützten Windows-Versionen enthalten ist

$> winget install 9NQ7512CXL7T -e --accept-package-agreements --disable-interactivity

# Optionally run the configuration checker and accept all changes
$> py install --configure -y

Um den Python-Installationsmanager herunterzuladen und auf einem anderen Rechner zu installieren, lädt der folgende WinGet-Befehl die erforderlichen Dateien aus dem Store in Ihr Download-Verzeichnis herunter (fügen Sie -d <Speicherort> hinzu, um den Ausgabeort anzupassen). Dies generiert auch eine YAML-Datei, die unnötig zu sein scheint, da die heruntergeladene MSIX durch Starten oder Verwenden der folgenden Befehle installiert werden kann.

$> winget download 9NQ7512CXL7T -e --skip-license --accept-package-agreements --accept-source-agreements

Um eine MSIX programmatisch nur mit PowerShell zu installieren oder zu deinstallieren, werden die Cmdlets Add-AppxPackage und Remove-AppxPackage empfohlen

$> Add-AppxPackage C:\Downloads\python-manager-25.0.msix
...
$> Get-AppxPackage PythonSoftwareFoundation.PythonManager | Remove-AppxPackage

Die neueste Version kann von Windows heruntergeladen und installiert werden, indem die AppInstaller-Datei an den Befehl Add-AppxPackage übergeben wird. Dies installiert die MSIX von python.org und wird nur für Fälle empfohlen, in denen die Installation über den Store (interaktiv oder mit WinGet) nicht möglich ist.

$> Add-AppxPackage -AppInstallerFile https://www.python.org/ftp/python/pymanager/pymanager.appinstaller

Andere Tools und APIs können ebenfalls verwendet werden, um ein MSIX-Paket für alle Benutzer eines Computers bereitzustellen, aber Python betrachtet dies nicht als unterstützten Szenario. Wir empfehlen, sich mit dem PowerShell-Cmdlet Add-AppxProvisionedPackage, der nativen Windows-Klasse PackageManager oder der Dokumentation und dem Support für Ihr Bereitstellungstool zu befassen.

Unabhängig von der Installationsmethode müssen Benutzer weiterhin ihre eigenen Kopien von Python selbst installieren, da es keine Möglichkeit gibt, diese Installationen auszulösen, ohne dass ein Benutzer angemeldet ist. Bei Verwendung der MSIX ist die neueste Version von Python für alle Benutzer ohne Netzwerkzugriff zur Installation verfügbar.

Beachten Sie, dass sich die MSIX, die aus dem Store und von der Python-Website heruntergeladen werden kann, geringfügig unterscheiden und nicht gleichzeitig installiert werden können. Wir empfehlen, wo immer möglich, die oben genannten WinGet-Befehle zu verwenden, um das Paket aus dem Store herunterzuladen, um das Risiko widersprüchlicher Installationen zu verringern. Es gibt keine Lizenzbeschränkungen für den Python-Installationsmanager, die die Verwendung des Store-Pakets auf diese Weise verhindern würden.

4.1.11. Administrative Konfiguration

Es gibt eine Reihe von Optionen, die für Administratoren nützlich sein können, um die Konfiguration des Python-Installationsmanagers zu überschreiben. Diese können verwendet werden, um lokales Caching bereitzustellen, bestimmte Verknüpfungstypen zu deaktivieren, gebündelte Inhalte zu überschreiben. Alle oben genannten Konfigurationsoptionen können gesetzt werden, sowie die unten aufgeführten.

Konfigurationsoptionen können in der Registrierung überschrieben werden, indem Werte unter HKEY_LOCAL_MACHINE\Software\Policies\Python\PyManager gesetzt werden, wobei der Wertname dem Konfigurationsschlüssel entspricht und der Werttyp REG_SZ ist. Beachten Sie, dass dieser Schlüssel selbst angepasst werden kann, aber nur durch Änderung der Kernkonfigurationsdatei, die mit dem Python-Installationsmanager verteilt wird. Wir empfehlen jedoch, Registrierungswerte nur zum Setzen von base_config auf eine JSON-Datei mit der vollständigen Liste der Überschreibungen zu verwenden. Registrierungsschlüssel-Überschreibungen ersetzen jede andere konfigurierte Einstellung, während base_config es Benutzern ermöglicht, Einstellungen weiter zu ändern, die sie möglicherweise benötigen.

Beachten Sie, dass die meisten Einstellungen mit Umgebungsvariablen diese Variablen unterstützen, da ihre Standardeinstellung die Variable angibt. Wenn Sie sie überschreiben, funktioniert die Umgebungsvariable nicht mehr, es sei denn, Sie überschreiben sie mit einer anderen. Zum Beispiel ist der Standardwert von confirm wörtlich %PYTHON_MANAGER_CONFIRM%, was die Variable zur Ladezeit auflöst. Wenn Sie den Wert in yes überschreiben, wird die Umgebungsvariable nicht mehr verwendet. Wenn Sie den Wert in %CONFIRM% überschreiben, wird diese Umgebungsvariable stattdessen verwendet.

Konfigurationseinstellungen, die Pfade sind, werden relativ zu dem Verzeichnis interpretiert, das die Konfigurationsdatei enthält, die sie angegeben hat.

Administrative Konfigurationsoptionen

Konfigurationsschlüssel

Beschreibung

base_config

Die Konfigurationsdatei mit der höchsten Priorität zum Lesen. Beachten Sie, dass nur die integrierte Konfigurationsdatei und die Registrierung diese Einstellung ändern können.

user_config

Die zweite zu lesende Konfigurationsdatei.

additional_config

Die dritte zu lesende Konfigurationsdatei.

registry_override_key

Registrierungsstandort, an dem nach Überschreibungen gesucht werden soll. Beachten Sie, dass nur die integrierte Konfigurationsdatei diese Einstellung ändern kann.

bundled_dir

Schreibgeschütztes Verzeichnis mit lokal zwischengespeicherten Dateien.

install.fallback_source

Pfad oder URL zu einem Index, der konsultiert werden soll, wenn der Hauptindex nicht erreichbar ist.

install.enable_shortcut_kinds

Komma-getrennte Liste von Verknüpfungsarten, die zulässig sind (z. B. "pep514,start"). Aktivierte Verknüpfungen können immer noch durch disable_shortcut_kinds deaktiviert werden.

install.disable_shortcut_kinds

Komma-getrennte Liste von Verknüpfungsarten, die ausgeschlossen werden sollen (z. B. "pep514,start"). Deaktivierte Verknüpfungen werden durch enable_shortcut_kinds nicht wieder aktiviert.

pep514_root

Registrierungsstandort zum Lesen und Schreiben von PEP 514-Einträgen. Standardmäßig HKEY_CURRENT_USER\Software\Python.

start_folder

Startmenüordner, in den Verknüpfungen geschrieben werden sollen. Standardmäßig Python. Dieser Pfad ist relativ zum Programme-Ordner des Benutzers.

virtual_env

Pfad zur aktiven virtuellen Umgebung. Standardmäßig ist dies %VIRTUAL_ENV%, kann aber leer gesetzt werden, um die venv-Erkennung zu deaktivieren.

shebang_can_run_anything_silently

True, um sichtbare Warnungen zu unterdrücken, wenn eine Shebang eine andere Anwendung als eine Python-Laufzeit startet.

4.1.12. Installation von Free-Threaded-Binaries

Hinzugefügt in Version 3.13.

Vorkompilierte Distributionen des Free-Threaded-Builds sind durch Installation von Tags mit dem Suffix t verfügbar.

$> py install 3.14t
$> py install 3.14t-arm64
$> py install 3.14t-32

Dies wird normal installiert und registriert. Wenn Sie keine anderen Laufzeiten installiert haben, startet python diese. Andernfalls müssen Sie py -V:3.14t ... verwenden oder, wenn Sie das globale Alias-Verzeichnis zu Ihrer PATH-Umgebungsvariablen hinzugefügt haben, die Befehle python3.14t.exe.

4.1.13. Fehlerbehebung

Wenn Ihr Python-Installationsmanager nicht richtig zu funktionieren scheint, führen Sie bitte diese Tests und Behebungen durch, um zu sehen, ob sie helfen. Wenn nicht, melden Sie bitte ein Problem unter unserem Bug-Tracker, einschließlich aller relevanten Log-Dateien (die standardmäßig in Ihr %TEMP%-Verzeichnis geschrieben werden).

Fehlerbehebung

Symptom

Zu versuchende Maßnahmen

python gibt mir eine „Befehl nicht gefunden“-Fehlermeldung oder öffnet die Store-App, wenn ich ihn in meinem Terminal eingebe.

Haben Sie den Python-Installationsmanager installiert?

Klicken Sie auf Start, öffnen Sie „App-Ausführungsaliase verwalten“ und prüfen Sie, ob die Aliase für „Python (Standard)“ aktiviert sind. Wenn sie bereits aktiviert sind, versuchen Sie, sie zu deaktivieren und wieder zu aktivieren, um den Befehl zu aktualisieren. Die Befehle „Python (Standardfenster)“ und „Python-Installationsmanager“ müssen möglicherweise ebenfalls aktualisiert werden.

Prüfen Sie, ob die Befehle py und pymanager funktionieren.

py gibt mir eine „Befehl nicht gefunden“-Fehlermeldung, wenn ich Befehle in mein Terminal eingebe.

Haben Sie den Python-Installationsmanager installiert?

Klicken Sie auf Start, öffnen Sie „App-Ausführungsaliase verwalten“ und prüfen Sie, ob die Aliase für „Python (Standard)“ aktiviert sind. Wenn sie bereits aktiviert sind, versuchen Sie, sie zu deaktivieren und wieder zu aktivieren, um den Befehl zu aktualisieren. Die Befehle „Python (Standardfenster)“ und „Python-Installationsmanager“ müssen möglicherweise ebenfalls aktualisiert werden.

py gibt mir eine „Datei kann nicht geöffnet werden“-Fehlermeldung, wenn ich Befehle in mein Terminal eingebe.

Dies bedeutet normalerweise, dass Sie den Legacy-Launcher installiert haben und dieser Vorrang vor dem Python-Installationsmanager hat. Um ihn zu entfernen, klicken Sie auf Start, öffnen Sie „Installierte Apps“, suchen Sie nach „Python-Launcher“ und deinstallieren Sie ihn.

python startet nicht dieselbe Laufzeit wie py

Klicken Sie auf Start, öffnen Sie „Installierte Apps“, suchen Sie nach vorhandenen Python-Laufzeiten und entfernen Sie diese entweder oder ändern Sie die PATH-Optionen und deaktivieren Sie sie.

Klicken Sie auf Start, öffnen Sie „App-Ausführungsaliase verwalten“ und prüfen Sie, ob Ihr python.exe-Alias auf „Python (Standard)“ gesetzt ist.

python und py starten nicht die erwartete Laufzeit

Überprüfen Sie Ihre Umgebungsvariable PYTHON_MANAGER_DEFAULT oder die Konfiguration default_tag. Der Befehl py list zeigt Ihre Standardeinstellung basierend auf diesen Einstellungen an.

Installation, die vom Python-Installationsmanager verwaltet werden, werden gegenüber nicht verwalteten Installationen bevorzugt. Verwenden Sie py install, um die erwartete Laufzeit zu installieren, oder konfigurieren Sie Ihr Standard-Tag.

Vorabversion- und experimentelle Installationen, die nicht vom Python-Installationsmanager verwaltet werden, können gegenüber stabilen Releases bevorzugt werden. Konfigurieren Sie Ihr Standard-Tag oder deinstallieren Sie die Vorabversion-Laufzeit und installieren Sie sie mit py install neu.

pythonw oder pyw starten nicht dieselbe Laufzeit wie python oder py

Klicken Sie auf Start, öffnen Sie „App-Ausführungsaliase verwalten“ und prüfen Sie, ob Ihre Aliase pythonw.exe und pyw.exe mit Ihren anderen konsistent sind.

pip gibt mir eine „Befehl nicht gefunden“-Fehlermeldung, wenn ich ihn in mein Terminal eingebe.

Haben Sie eine virtuelle Umgebung aktiviert? Führen Sie das Skript .venv\Scripts\activate in Ihrem Terminal aus, um es zu aktivieren.

Das Paket ist möglicherweise verfügbar, aber die generierte ausführbare Datei fehlt. Wir empfehlen stattdessen die Verwendung des Befehls python -m pip oder alternativ wird der Befehl python -m pip install --force pip die ausführbaren Dateien neu erstellen und Ihnen den Pfad anzeigen, den Sie zu PATH hinzufügen können. Diese Skripte sind für jede Laufzeit getrennt, daher müssen Sie möglicherweise mehrere Pfade hinzufügen.

4.2. Das einbettbare Paket

Hinzugefügt in Version 3.5.

Die eingebettete Distribution ist eine ZIP-Datei, die eine minimale Python-Umgebung enthält. Sie ist dazu bestimmt, Teil einer anderen Anwendung zu sein, anstatt direkt von Endbenutzern aufgerufen zu werden.

Um eine eingebettete Distribution zu installieren, empfehlen wir die Verwendung von py install mit der Option --target

$> py install 3.14-embed --target=runtime

Nach dem Entpacken ist die eingebettete Distribution (fast) vollständig vom System des Benutzers isoliert, einschließlich Umgebungsvariablen, Systemeinstellungen der Registrierung und installierter Pakete. Die Standardbibliothek ist als vorkompilierte und optimierte .pyc-Dateien in einem ZIP enthalten, und python3.dll, python313.dll, python.exe und pythonw.exe sind alle vorhanden. Tcl/tk (einschließlich aller Abhängigkeiten wie Idle), pip und die Python-Dokumentation sind nicht enthalten.

Eine Standarddatei ._pth ist enthalten, die die Standard-Suchpfade weiter einschränkt (wie unten in Module finden beschrieben). Diese Datei ist für Embedder gedacht, die sie nach Bedarf ändern können.

Drittanbieter-Pakete sollten vom Anwendungs-Installer neben der eingebetteten Distribution installiert werden. Die Verwendung von pip zur Verwaltung von Abhängigkeiten wie bei einer regulären Python-Installation wird mit dieser Distribution nicht unterstützt, obwohl es mit einiger Sorgfalt möglich sein könnte, pip für automatische Updates einzuschließen und zu verwenden. Im Allgemeinen sollten Drittanbieter-Pakete als Teil der Anwendung ("Vendoring") behandelt werden, damit der Entwickler die Kompatibilität mit neueren Versionen sicherstellen kann, bevor Updates an die Benutzer weitergegeben werden.

Die beiden empfohlenen Anwendungsfälle für diese Distribution werden unten beschrieben.

4.2.1. Python-Anwendung

Eine in Python geschriebene Anwendung erfordert nicht unbedingt, dass Benutzer diese Tatsache kennen. Die eingebettete Distribution kann in diesem Fall verwendet werden, um eine private Version von Python in ein Installationspaket aufzunehmen. Je nachdem, wie transparent es sein soll (oder umgekehrt, wie professionell es erscheinen soll), gibt es zwei Optionen.

Die Verwendung einer spezialisierten ausführbaren Datei als Launcher erfordert etwas Programmierung, bietet aber die transparenteste Erfahrung für Benutzer. Mit einem angepassten Launcher gibt es keine offensichtlichen Anzeichen dafür, dass das Programm unter Python läuft: Symbole können angepasst, Unternehmens- und Versionsinformationen angegeben und Dateizuordnungen korrekt funktionieren. In den meisten Fällen sollte ein benutzerdefinierter Launcher einfach Py_Main mit einer hartkodierten Befehlszeile aufrufen können.

Der einfachere Ansatz ist, eine Batch-Datei oder eine generierte Verknüpfung bereitzustellen, die direkt python.exe oder pythonw.exe mit den erforderlichen Befehlszeilenargumenten aufruft. In diesem Fall wird die Anwendung als Python und nicht unter ihrem tatsächlichen Namen angezeigt, und Benutzer können Schwierigkeiten haben, sie von anderen laufenden Python-Prozessen oder Dateizuordnungen zu unterscheiden.

Bei letzterem Ansatz sollten Pakete als Verzeichnisse neben der ausführbaren Python-Datei installiert werden, um sicherzustellen, dass sie auf dem Pfad verfügbar sind. Mit dem spezialisierten Launcher können Pakete an anderen Orten platziert werden, da die Möglichkeit besteht, den Suchpfad anzugeben, bevor die Anwendung gestartet wird.

4.2.2. Python einbetten

Anwendungen, die in nativem Code geschrieben sind, benötigen oft eine Art von Skriptsprache, und die eingebettete Python-Distribution kann für diesen Zweck verwendet werden. Im Allgemeinen ist der Großteil der Anwendung in nativem Code geschrieben, und ein Teil wird entweder python.exe aufrufen oder direkt python3.dll verwenden. In beiden Fällen reicht das Entpacken der eingebetteten Distribution in ein Unterverzeichnis der Anwendungsinstallation aus, um einen ladbaren Python-Interpreter bereitzustellen.

Wie bei der Anwendung können Pakete an jedem beliebigen Ort installiert werden, da die Möglichkeit besteht, Suchpfade anzugeben, bevor der Interpreter initialisiert wird. Ansonsten gibt es keine grundlegenden Unterschiede zwischen der Verwendung der eingebetteten Distribution und einer regulären Installation.

4.3. Die nuget.org-Pakete

Hinzugefügt in Version 3.5.2.

Das nuget.org-Paket ist eine kleinere Python-Umgebung, die für die Verwendung in Continuous Integration- und Build-Systemen bestimmt ist, die keine systemweite Installation von Python haben. Während nuget „der Paketmanager für .NET“ ist, funktioniert er auch einwandfrei für Pakete, die Build-Tools enthalten.

Besuchen Sie nuget.org für die aktuellsten Informationen zur Verwendung von nuget. Was folgt ist eine Zusammenfassung, die für Python-Entwickler ausreichend ist.

Das Kommandozeilen-Tool nuget.exe kann direkt von https://aka.ms/nugetclidl heruntergeladen werden, zum Beispiel mit curl oder PowerShell. Mit dem Tool wird die neueste Version von Python für 64-Bit- oder 32-Bit-Maschinen installiert mit

nuget.exe install python -ExcludeVersion -OutputDirectory .
nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .

Um eine bestimmte Version auszuwählen, fügen Sie -Version 3.x.y hinzu. Das Ausgabe-Verzeichnis kann von . geändert werden, und das Paket wird in ein Unterverzeichnis installiert. Standardmäßig hat das Unterverzeichnis denselben Namen wie das Paket, und ohne die Option -ExcludeVersion wird dieser Name die spezifische installierte Version enthalten. Innerhalb des Unterverzeichnisses befindet sich ein Verzeichnis tools, das die Python-Installation enthält

# Without -ExcludeVersion
> .\python.3.5.2\tools\python.exe -V
Python 3.5.2

# With -ExcludeVersion
> .\python\tools\python.exe -V
Python 3.5.2

Im Allgemeinen sind nuget-Pakete nicht upgradebar, und neuere Versionen sollten nebeneinander installiert und mit dem vollständigen Pfad referenziert werden. Alternativ können Sie das Paketverzeichnis manuell löschen und erneut installieren. Viele CI-Systeme tun dies automatisch, wenn sie Dateien zwischen Builds nicht erhalten.

Neben dem Verzeichnis tools befindet sich ein Verzeichnis build\native. Dieses enthält eine MSBuild-Eigenschaften-Datei python.props, die in einem C++-Projekt verwendet werden kann, um auf die Python-Installation zu verweisen. Das Einbinden der Einstellungen verwendet automatisch die Header und Importbibliotheken in Ihrem Build.

Die Paketinformationsseiten auf nuget.org sind www.nuget.org/packages/python für die 64-Bit-Version, www.nuget.org/packages/pythonx86 für die 32-Bit-Version und www.nuget.org/packages/pythonarm64 für die ARM64-Version

4.3.1. Free-Threaded-Pakete

Hinzugefügt in Version 3.13.

Pakete, die Free-Threaded-Binaries enthalten, heißen python-freethreaded für die 64-Bit-Version, pythonx86-freethreaded für die 32-Bit-Version und pythonarm64-freethreaded für die ARM64-Version. Diese Pakete enthalten sowohl die Einstiegspunkte python3.13t.exe als auch python.exe, die beide Free-Threaded ausführen.

4.4. Alternative Bundles

Neben der Standard-CPython-Distribution gibt es modifizierte Pakete mit zusätzlichen Funktionen. Die folgende Liste enthält beliebte Versionen und ihre Hauptmerkmale

ActivePython

Installer mit plattformübergreifender Kompatibilität, Dokumentation, PyWin32

Anaconda

Beliebte wissenschaftliche Module (wie numpy, scipy und pandas) und der Paketmanager conda.

Enthought Deployment Manager

„Die Python-Umgebung und der Paketmanager der nächsten Generation“.

Zuvor bot Enthought Canopy an, aber es erreichte Ende 2016 sein Lebensende.

WinPython

Windows-spezifische Distribution mit vorkompilierten wissenschaftlichen Paketen und Tools zum Erstellen von Paketen.

Beachten Sie, dass diese Pakete möglicherweise nicht die neuesten Versionen von Python oder anderen Bibliotheken enthalten und nicht vom Kern-Python-Team gepflegt oder unterstützt werden.

4.5. Unterstützte Windows-Versionen

Wie in PEP 11 angegeben, unterstützt eine Python-Veröffentlichung eine Windows-Plattform nur, solange Microsoft die Plattform als unter erweiterter Unterstützung betrachtend ansieht. Das bedeutet, dass Python 3.14 Windows 10 und neuer unterstützt. Wenn Sie Unterstützung für Windows 7 benötigen, installieren Sie Python 3.8. Wenn Sie Unterstützung für Windows 8.1 benötigen, installieren Sie Python 3.12.

4.6. Entfernen der MAX_PATH-Beschränkung

Windows hat die Pfadlängen historisch auf 260 Zeichen beschränkt. Das bedeutete, dass Pfade, die länger als diese waren, nicht aufgelöst werden konnten und Fehler auftraten.

In den neuesten Versionen von Windows kann diese Beschränkung auf über 32.000 Zeichen erweitert werden. Ihr Administrator muss die Gruppenrichtlinie „Win32-Langpfade aktivieren“ aktivieren oder LongPathsEnabled im Registrierungsschlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem auf 1 setzen.

Dies ermöglicht es der Funktion open(), dem os-Modul und den meisten anderen Pfadfunktionen, Pfade, die länger als 260 Zeichen sind, zu akzeptieren und zurückzugeben.

Nachdem die obige Option geändert und der Computer neu gestartet wurde, sind keine weiteren Konfigurationen erforderlich.

4.7. UTF-8-Modus

Hinzugefügt in Version 3.7.

Windows verwendet immer noch Legacy-Kodierungen für die Systemkodierung (die ANSI-Codepage). Python verwendet diese für die Standardkodierung von Textdateien (z. B. locale.getencoding()).

Dies kann zu Problemen führen, da UTF-8 im Internet und auf den meisten Unix-Systemen, einschließlich WSL (Windows Subsystem for Linux), weit verbreitet ist.

Sie können den Python UTF-8-Modus verwenden, um die Standardtextkodierung in UTF-8 zu ändern. Sie können den Python UTF-8-Modus über die Befehlszeilenoption -X utf8 oder die Umgebungsvariable PYTHONUTF8=1 aktivieren. Siehe PYTHONUTF8 zum Aktivieren des UTF-8-Modus und Python install manager, um Umgebungsvariablen zu ändern.

Wenn der Python UTF-8-Modus aktiviert ist, können Sie die Systemkodierung (die ANSI-Codepage) weiterhin über den „mbcs“-Codec verwenden.

Beachten Sie, dass das Hinzufügen von PYTHONUTF8=1 zu den Standardumgebungsvariablen alle Python 3.7+-Anwendungen auf Ihrem System beeinflusst. Wenn Sie Python 3.7+-Anwendungen haben, die von der Legacy-Systemkodierung abhängen, wird empfohlen, die Umgebungsvariable temporär zu setzen oder die Befehlszeilenoption -X utf8 zu verwenden.

Hinweis

Selbst wenn der UTF-8-Modus deaktiviert ist, verwendet Python unter Windows standardmäßig UTF-8 für

4.8. Module finden

Diese Hinweise ergänzen die Beschreibung unter Die Initialisierung des sys.path-Modulsuchpfads mit detaillierten Windows-Hinweisen.

Wenn keine ._pth-Datei gefunden wird, wird sys.path unter Windows wie folgt gefüllt:

  • Ein leeres Element wird am Anfang hinzugefügt, das dem aktuellen Verzeichnis entspricht.

  • Wenn die Umgebungsvariable PYTHONPATH existiert, wie in Umgebungsvariablen beschrieben, werden als nächstes ihre Elemente hinzugefügt. Beachten Sie, dass unter Windows Pfade in dieser Variablen durch Semikolons getrennt sein müssen, um sie von dem Doppelpunkt zu unterscheiden, der in Laufwerksbezeichnern verwendet wird (C:\ usw.).

  • Zusätzliche „Anwendungspfade“ können im Registrierung als Unterschlüssel von \SOFTWARE\Python\PythonCore{version}\PythonPath sowohl unter den HKEY_CURRENT_USER- als auch unter den HKEY_LOCAL_MACHINE-Hives hinzugefügt werden. Unterschlüssel, die Semikolon-getrennte Pfadzeichenfolgen als Standardwert haben, bewirken, dass jeder Pfad zu sys.path hinzugefügt wird. (Beachten Sie, dass alle bekannten Installer nur HKLM verwenden, daher ist HKCU typischerweise leer.)

  • Wenn die Umgebungsvariable PYTHONHOME gesetzt ist, wird sie als „Python Home“ angenommen. Andernfalls wird der Pfad der Haupt-Python-Ausführdatei verwendet, um eine „Landmark-Datei“ (entweder Lib\os.py oder pythonXY.zip) zu finden, um das „Python Home“ abzuleiten. Wenn ein Python Home gefunden wird, basieren die relevanten Unterverzeichnisse, die zu sys.path hinzugefügt werden (Lib, plat-win usw.), auf diesem Ordner. Andernfalls wird der Kern-Python-Pfad aus dem in der Registrierung gespeicherten PythonPath konstruiert.

  • Wenn das Python Home nicht gefunden werden kann, kein PYTHONPATH in der Umgebung angegeben ist und keine Registrierungseinträge gefunden werden können, wird ein Standardpfad mit relativen Einträgen verwendet (z. B. .\Lib;.\plat-win usw.).

Wenn eine pyvenv.cfg-Datei neben der Hauptausführdatei oder im Verzeichnis eine Ebene über der Ausführdatei gefunden wird, gelten folgende Variationen:

  • Wenn home ein absoluter Pfad ist und PYTHONHOME nicht gesetzt ist, wird dieser Pfad anstelle des Pfads zur Hauptausführdatei verwendet, wenn das Home-Verzeichnis abgeleitet wird.

Das Endergebnis von all dem ist:

  • Beim Ausführen von python.exe oder einer anderen .exe im Hauptverzeichnis von Python (entweder eine installierte Version oder direkt aus dem PCbuild-Verzeichnis) wird der Kernpfad abgeleitet und die Kernpfade in der Registrierung werden ignoriert. Andere „Anwendungspfade“ in der Registrierung werden immer gelesen.

  • Wenn Python in einer anderen .exe gehostet wird (anderes Verzeichnis, über COM eingebettet usw.), wird das „Python Home“ nicht abgeleitet, sodass der Kernpfad aus der Registrierung verwendet wird. Andere „Anwendungspfade“ in der Registrierung werden immer gelesen.

  • Wenn Python sein Home nicht finden kann und kein Registrierungswert vorhanden ist (frozen .exe, sehr seltsame Installationskonfiguration), erhalten Sie einen Pfad mit einigen Standard-, aber relativen Pfaden.

Für diejenigen, die Python in ihre Anwendung oder Distribution bündeln möchten, verhindern die folgenden Ratschläge Konflikte mit anderen Installationen:

  • Fügen Sie eine ._pth-Datei neben Ihrer ausführbaren Datei hinzu, die die einzufügenden Verzeichnisse enthält. Dies ignoriert Pfade, die in der Registrierung und in Umgebungsvariablen aufgeführt sind, und ignoriert auch site, es sei denn, import site ist aufgeführt.

  • Wenn Sie python3.dll oder python37.dll in Ihrer eigenen ausführbaren Datei laden, setzen Sie explizit PyConfig.module_search_paths vor Py_InitializeFromConfig().

  • Löschen und/oder überschreiben Sie PYTHONPATH und setzen Sie PYTHONHOME, bevor Sie python.exe aus Ihrer Anwendung starten.

  • Wenn Sie die vorherigen Vorschläge nicht verwenden können (z. B. als Distribution, die es Benutzern erlaubt, python.exe direkt auszuführen), stellen Sie sicher, dass die Landmark-Datei (Lib\os.py) in Ihrem Installationsverzeichnis vorhanden ist. (Beachten Sie, dass sie nicht innerhalb einer ZIP-Datei erkannt wird, aber eine korrekt benannte ZIP-Datei stattdessen erkannt wird.)

Dadurch wird sichergestellt, dass die Dateien einer systemweiten Installation nicht Vorrang vor der mit Ihrer Anwendung gebündelten Kopie der Standardbibliothek haben. Andernfalls können Ihre Benutzer Probleme bei der Verwendung Ihrer Anwendung haben. Beachten Sie, dass der erste Vorschlag der beste ist, da die anderen möglicherweise immer noch anfällig für nicht standardmäßige Pfade in der Registrierung und benutzerdefinierte site-packages sind.

Geändert in Version 3.6: Unterstützung für ._pth-Dateien hinzugefügt und die Option applocal aus pyvenv.cfg entfernt.

Geändert in Version 3.6: pythonXX.zip als potenzielle Landmark-Datei hinzugefügt, wenn sie sich direkt neben der ausführbaren Datei befindet.

Veraltet seit Version 3.6: Module, die in der Registrierung unter Modules (nicht PythonPath) angegeben sind, können von importlib.machinery.WindowsRegistryFinder importiert werden. Dieser Finder ist unter Windows in 3.6.0 und früher aktiviert, muss aber möglicherweise in Zukunft explizit zu sys.meta_path hinzugefügt werden.

4.9. Zusätzliche Module

Obwohl Python darauf abzielt, plattformübergreifend portierbar zu sein, gibt es Funktionen, die für Windows einzigartig sind. Ein paar Module, sowohl in der Standardbibliothek als auch extern, und Snippets existieren, um diese Funktionen zu nutzen.

Die Windows-spezifischen Standardmodule sind in MS Windows Spezifische Dienste dokumentiert.

4.9.1. PyWin32

Das PyWin32-Modul von Mark Hammond ist eine Sammlung von Modulen für erweiterte Windows-spezifische Unterstützung. Dies umfasst Dienstprogramme für

PythonWin ist eine Beispiel-MFC-Anwendung, die mit PyWin32 ausgeliefert wird. Es handelt sich um eine einbettbare IDE mit einem integrierten Debugger.

Siehe auch

Win32 How Do I…?

von Tim Golden

Python und COM

von David und Paul Boddie

4.9.2. cx_Freeze

cx_Freeze verpackt Python-Skripte in ausführbare Windows-Programme (*.exe-Dateien). Wenn Sie dies getan haben, können Sie Ihre Anwendung verteilen, ohne dass Ihre Benutzer Python installieren müssen.

4.10. Python unter Windows kompilieren

Wenn Sie CPython selbst kompilieren möchten, sollten Sie zuerst den Quellcode herunterladen. Sie können entweder den Quellcode der neuesten Version herunterladen oder einfach einen frischen Checkout vornehmen.

Der Quellcode-Baum enthält eine Build-Lösung und Projektdateien für Microsoft Visual Studio, den Compiler, der zum Erstellen der offiziellen Python-Releases verwendet wird. Diese Dateien befinden sich im Verzeichnis PCbuild.

Allgemeine Informationen zum Build-Prozess finden Sie in PCbuild/readme.txt.

Für Erweiterungsmodule konsultieren Sie Erweiterungen in C und C++ unter Windows erstellen.

4.11. Der vollständige Installer (veraltet)

Veraltet seit Version 3.14: Dieser Installer ist seit 3.14 veraltet und wird für Python 3.16 oder neuer nicht mehr erstellt. Siehe Python install manager für den modernen Installer.

4.11.1. Installationsschritte

Vier Python 3.14-Installer stehen zum Download bereit – jeweils zwei für die 32-Bit- und 64-Bit-Versionen des Interpreters. Der *Webinstaller* ist ein kleiner anfänglicher Download und lädt die erforderlichen Komponenten automatisch nach Bedarf herunter. Der *Offline-Installer* enthält die Komponenten, die für eine Standardinstallation erforderlich sind, und benötigt nur eine Internetverbindung für optionale Funktionen. Siehe Installieren ohne Herunterladen für weitere Möglichkeiten, das Herunterladen während der Installation zu vermeiden.

Nach dem Start des Installers können eine von zwei Optionen ausgewählt werden:

../_images/win_installer.png

Wenn Sie „Jetzt installieren“ wählen

  • Sie müssen kein Administrator sein (es sei denn, ein Systemupdate für die C Runtime Library ist erforderlich oder Sie installieren den Python install manager für alle Benutzer)

  • Python wird in Ihr Benutzerverzeichnis installiert.

  • Der Python install manager wird gemäß der Option am Ende der ersten Seite installiert.

  • Die Standardbibliothek, die Testsuite, der Launcher und pip werden installiert.

  • Wenn ausgewählt, wird das Installationsverzeichnis zu Ihrem PATH hinzugefügt.

  • Verknüpfungen sind nur für den aktuellen Benutzer sichtbar.

Die Auswahl von „Benutzerdefinierte Installation“ ermöglicht es Ihnen, die zu installierenden Funktionen, den Installationsort und andere Optionen oder Aktionen nach der Installation auszuwählen. Um Debugging-Symbole oder Binärdateien zu installieren, müssen Sie diese Option verwenden.

Um eine Installation für alle Benutzer durchzuführen, sollten Sie „Benutzerdefinierte Installation“ auswählen. In diesem Fall:

  • Möglicherweise müssen Sie Administrator-Anmeldeinformationen oder eine Genehmigung eingeben.

  • Python wird im Verzeichnis „Programme“ installiert.

  • Der Python install manager wird im Windows-Verzeichnis installiert.

  • Optionale Funktionen können während der Installation ausgewählt werden.

  • Die Standardbibliothek kann in Bytecode vorkompiliert werden.

  • Wenn ausgewählt, wird das Installationsverzeichnis zum System-PATH hinzugefügt.

  • Verknüpfungen sind für alle Benutzer verfügbar.

4.11.2. Entfernen der MAX_PATH-Beschränkung

Windows hat die Pfadlängen historisch auf 260 Zeichen beschränkt. Das bedeutete, dass Pfade, die länger als diese waren, nicht aufgelöst werden konnten und Fehler auftraten.

In den neuesten Versionen von Windows kann diese Beschränkung auf etwa 32.000 Zeichen erweitert werden. Ihr Administrator muss die Gruppenrichtlinie „Win32-Langpfade aktivieren“ aktivieren oder LongPathsEnabled im Registrierungsschlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem auf 1 setzen.

Dies ermöglicht es der Funktion open(), dem os-Modul und den meisten anderen Pfadfunktionen, Pfade, die länger als 260 Zeichen sind, zu akzeptieren und zurückzugeben.

Nachdem die obige Option geändert wurde, sind keine weiteren Konfigurationen erforderlich.

Geändert in Version 3.6: Unterstützung für lange Pfade wurde in Python aktiviert.

4.11.3. Installation ohne Benutzeroberfläche

Alle Optionen, die in der Installer-Oberfläche verfügbar sind, können auch über die Befehlszeile angegeben werden, wodurch skriptgesteuerte Installationen viele Rechner ohne Benutzerinteraktion replizieren können. Diese Optionen können auch ohne Unterdrückung der Benutzeroberfläche gesetzt werden, um einige der Standardeinstellungen zu ändern.

Die folgenden Optionen (zu finden durch Ausführen des Installers mit /?) können in den Installer übergeben werden:

Name

Beschreibung

/passive

um den Fortschritt ohne Benutzerinteraktion anzuzeigen

/quiet

zum Installieren/Deinstallieren ohne Anzeige einer Benutzeroberfläche

/simple

um eine Benutzeranpassung zu verhindern

/uninstall

zum Entfernen von Python (ohne Bestätigung)

/layout [Verzeichnis]

zum Vorab-Download aller Komponenten

/log [Dateiname]

zum Festlegen des Speicherorts von Protokolldateien

Alle anderen Optionen werden als name=value übergeben, wobei der Wert normalerweise 0 zum Deaktivieren einer Funktion, 1 zum Aktivieren einer Funktion oder ein Pfad ist. Die vollständige Liste der verfügbaren Optionen ist unten aufgeführt.

Name

Beschreibung

Standard

InstallAllUsers

Führt eine systemweite Installation durch.

0

TargetDir

Das Installationsverzeichnis

Ausgewählt basierend auf InstallAllUsers

DefaultAllUsersTargetDir

Das Standardinstallationsverzeichnis für Installationen für alle Benutzer

%ProgramFiles%\Python X.Y oder %ProgramFiles(x86)%\Python X.Y

DefaultJustForMeTargetDir

Das Standardinstallationsverzeichnis für Installationen nur für mich

%LocalAppData%\Programs\Python\PythonXY oder %LocalAppData%\Programs\Python\PythonXY-32 oder %LocalAppData%\Programs\Python\PythonXY-64

DefaultCustomTargetDir

Das Standard-Benutzerdefinierte Installationsverzeichnis, das in der Benutzeroberfläche angezeigt wird

(leer)

AssociateFiles

Erstellt Dateizuordnungen, wenn der Launcher ebenfalls installiert ist.

1

CompileAll

Kompiliert alle .py-Dateien zu .pyc.

0

PrependPath

Fügt die Installations- und Skriptverzeichnisse dem PATH voran und fügt .PY zu PATHEXT hinzu

0

AppendPath

Hängt die Installations- und Skriptverzeichnisse an den PATH an und fügt .PY zu PATHEXT hinzu

0

Shortcuts

Erstellt Verknüpfungen für den Interpreter, die Dokumentation und IDLE, falls installiert.

1

Include_doc

Installiert das Python-Handbuch.

1

Include_debug

Installiert Debug-Binärdateien.

0

Include_dev

Installiert Entwickler-Header und Bibliotheken. Das Auslassen kann zu einer unbrauchbaren Installation führen.

1

Include_exe

Installiert python.exe und zugehörige Dateien. Das Auslassen kann zu einer unbrauchbaren Installation führen.

1

Include_launcher

Installiert den Python install manager.

1

InstallLauncherAllUsers

Installiert den Launcher für alle Benutzer. Erfordert auch, dass Include_launcher auf 1 gesetzt ist.

1

Include_lib

Installiert die Standardbibliothek und Erweiterungsmodule. Das Auslassen kann zu einer unbrauchbaren Installation führen.

1

Include_pip

Installiert gebündelte pip und setuptools.

1

Include_symbols

Installiert Debugging-Symbole (*.pdb).

0

Include_tcltk

Installiert Tcl/Tk-Unterstützung und IDLE.

1

Include_test

Installiert die Standardbibliothek-Testsuite.

1

Include_tools

Installiert Dienstprogramme.

1

LauncherOnly

Installiert nur den Launcher. Dies überschreibt die meisten anderen Optionen.

0

SimpleInstall

Deaktiviert die meisten Installations-Benutzeroberflächen.

0

SimpleInstallDescription

Eine benutzerdefinierte Nachricht, die angezeigt wird, wenn die vereinfachte Installations-Benutzeroberfläche verwendet wird.

(leer)

Um beispielsweise eine standardmäßige, systemweite Python-Installation lautlos zu installieren, könnten Sie den folgenden Befehl verwenden (aus einer erhöhten Eingabeaufforderung):

python-3.9.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0

Um Benutzern die einfache Installation einer persönlichen Kopie von Python ohne die Testsuite zu ermöglichen, könnten Sie eine Verknüpfung mit dem folgenden Befehl bereitstellen. Dies zeigt eine vereinfachte Anfangsseite an und erlaubt keine Anpassung:

python-3.9.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0
    SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite."

(Beachten Sie, dass das Auslassen des Launchers auch Dateizuordnungen auslässt und nur für installationsspezifische Installationen empfohlen wird, wenn auch eine systemweite Installation vorhanden ist, die den Launcher enthielt.)

Die oben aufgeführten Optionen können auch in einer Datei namens unattend.xml neben der ausführbaren Datei bereitgestellt werden. Diese Datei gibt eine Liste von Optionen und Werten an. Wenn ein Wert als Attribut bereitgestellt wird, wird er, wenn möglich, in eine Zahl umgewandelt. Als Textelement bereitgestellte Werte werden immer als Zeichenfolgen belassen. Diese Beispiel-Datei setzt die gleichen Optionen wie das vorherige Beispiel:

<Options>
    <Option Name="InstallAllUsers" Value="no" />
    <Option Name="Include_launcher" Value="0" />
    <Option Name="Include_test" Value="no" />
    <Option Name="SimpleInstall" Value="yes" />
    <Option Name="SimpleInstallDescription">Just for me, no test suite</Option>
</Options>

4.11.4. Installation ohne Herunterladen

Da einige Funktionen von Python nicht im anfänglichen Installer-Download enthalten sind, kann die Auswahl dieser Funktionen eine Internetverbindung erfordern. Um diese Notwendigkeit zu vermeiden, können alle möglichen Komponenten bei Bedarf heruntergeladen werden, um ein vollständiges *Layout* zu erstellen, das unabhängig von den ausgewählten Funktionen keine Internetverbindung mehr benötigt. Beachten Sie, dass dieser Download größer sein kann als erforderlich, aber dort, wo eine große Anzahl von Installationen durchgeführt werden soll, ist es sehr nützlich, eine lokal zwischengespeicherte Kopie zu haben.

Führen Sie den folgenden Befehl in der Eingabeaufforderung aus, um alle erforderlichen Dateien herunterzuladen. Denken Sie daran, python-3.9.0.exe durch den tatsächlichen Namen Ihres Installers zu ersetzen und Layouts in eigenen Verzeichnissen zu erstellen, um Kollisionen zwischen Dateien mit demselben Namen zu vermeiden.

python-3.9.0.exe /layout [optional target directory]

Sie können auch die Option /quiet angeben, um die Fortschrittsanzeige zu verbergen.

4.11.5. Modifizieren einer Installation

Nachdem Python installiert wurde, können Sie Features über das Tool „Programme und Features“ in Windows hinzufügen oder entfernen. Wählen Sie den Python-Eintrag aus und wählen Sie „Deinstallieren/Ändern“, um den Installer im Wartungsmodus zu öffnen.

„Ändern“ ermöglicht es Ihnen, Funktionen durch Ändern der Kontrollkästchen hinzuzufügen oder zu entfernen – unveränderte Kontrollkästchen installieren oder entfernen nichts. Einige Optionen können in diesem Modus nicht geändert werden, z. B. das Installationsverzeichnis; um diese zu ändern, müssen Sie Python vollständig deinstallieren und dann neu installieren.

„Reparieren“ überprüft alle Dateien, die gemäß den aktuellen Einstellungen installiert werden sollen, und ersetzt alle, die entfernt oder geändert wurden.

„Deinstallieren“ entfernt Python vollständig, mit Ausnahme des Python install manager, der einen eigenen Eintrag in „Programme und Features“ hat.

4.11.6. Installieren von Free-Threaded Binärdateien

Hinzugefügt in Version 3.13.

Um vordefinierte Binärdateien mit aktivierter Free-Threading zu installieren (siehe PEP 703), sollten Sie „Benutzerdefinierte Installation“ wählen. Die zweite Seite der Optionen enthält das Kontrollkästchen „Free-threaded Binärdateien herunterladen“.

../_images/win_install_freethreaded.png

Die Auswahl dieser Option lädt zusätzliche Binärdateien herunter und installiert sie an demselben Speicherort wie die Haupt-Python-Installation. Die Hauptausführdatei heißt python3.13t.exe, und andere Binärdateien erhalten entweder ein t-Suffix oder ein vollständiges ABI-Suffix. Python-Quelldateien und gebündelte Drittanbieterabhängigkeiten werden mit der Hauptinstallation geteilt.

Die Free-Threaded-Version wird als normale Python-Installation mit dem Tag 3.13t registriert (mit einem Suffix -32 oder -arm64 wie üblich für diese Plattformen). Dies ermöglicht Tools, sie zu erkennen, und dem Python install manager, py.exe -3.13t zu unterstützen. Beachten Sie, dass der Launcher py.exe -3 (oder ein python3 Shebang) als „die neueste 3.x-Installation“ interpretiert, die den Free-Threaded-Binärdateien den regulären vorzieht, während py.exe -3.13 dies nicht tut. Wenn Sie die Kurzform der Option verwenden, möchten Sie möglicherweise die Free-Threaded-Binärdateien zu diesem Zeitpunkt nicht installieren.

Um die Installationsoption auf der Befehlszeile anzugeben, verwenden Sie Include_freethreaded=1. Siehe Installation ohne Herunterladen für Anweisungen zum Vorab-Download der zusätzlichen Binärdateien für die Offline-Installation. Die Optionen zum Einbeziehen von Debug-Symbolen und Binärdateien gelten auch für die Free-Threaded-Builds.

Free-Threaded-Binärdateien sind auch auf nuget.org verfügbar.

4.12. Python-Launcher für Windows (veraltet)

Veraltet seit Version 3.14: Der Launcher und diese Dokumentation wurden durch den oben beschriebenen Python Install Manager ersetzt. Dies ist vorübergehend aus historischen Gründen beibehalten.

Hinzugefügt in Version 3.3.

Der Python-Launcher für Windows ist ein Dienstprogramm, das beim Auffinden und Ausführen verschiedener Python-Versionen hilft. Er ermöglicht Skripten (oder der Befehlszeile), eine Präferenz für eine bestimmte Python-Version anzugeben, und findet und führt diese Version aus.

Im Gegensatz zur PATH-Variable wählt der Launcher die am besten geeignete Python-Version korrekt aus. Er bevorzugt installationsspezifische Installationen gegenüber systemweiten und ordnet nach Sprachversionen statt nach der zuletzt installierten Version.

Der Launcher wurde ursprünglich in PEP 397 spezifiziert.

4.12.1. Erste Schritte

4.12.1.1. Von der Befehlszeile

Geändert in Version 3.6.

Systemweite Installationen von Python 3.3 und höher legen den Launcher auf Ihrem PATH ab. Der Launcher ist mit allen verfügbaren Python-Versionen kompatibel, sodass es keine Rolle spielt, welche Version installiert ist. Um zu überprüfen, ob der Launcher verfügbar ist, führen Sie den folgenden Befehl in der Eingabeaufforderung aus:

py

Sie sollten feststellen, dass die neueste installierte Python-Version gestartet wird – sie kann normal beendet werden, und alle zusätzlichen angegebenen Befehlszeilenargumente werden direkt an Python übergeben.

Wenn Sie mehrere Python-Versionen installiert haben (z. B. 3.7 und 3.14), haben Sie festgestellt, dass Python 3.14 gestartet wurde – um Python 3.7 zu starten, versuchen Sie den Befehl:

py -3.7

Wenn Sie die neueste installierte Python 2-Version wünschen, versuchen Sie den Befehl:

py -2

Wenn Sie die folgende Fehlermeldung sehen, haben Sie den Launcher nicht installiert:

'py' is not recognized as an internal or external command,
operable program or batch file.

Der Befehl

py --list

zeigt die aktuell installierten Python-Versionen an.

Das Argument -x.y ist die Kurzform des Arguments -V:Company/Tag, das die Auswahl einer bestimmten Python-Laufzeitumgebung ermöglicht, einschließlich derer, die möglicherweise von woanders als python.org stammen. Jede Laufzeitumgebung, die gemäß PEP 514 registriert wurde, wird erkennbar sein. Der Befehl --list listet alle verfügbaren Laufzeitumgebungen im Format -V: auf.

Bei Verwendung des Arguments -V: beschränkt die Angabe des Unternehmens die Auswahl auf Laufzeitumgebungen dieses Anbieters, während die Angabe nur des Tags die Auswahl aus allen Anbietern ermöglicht. Beachten Sie, dass das Auslassen des Schrägstrichs einen Tag impliziert.

# Select any '3.*' tagged runtime
py -V:3

# Select any 'PythonCore' released runtime
py -V:PythonCore/

# Select PythonCore's latest Python 3 runtime
py -V:PythonCore/3

Die Kurzform des Arguments (-3) wählt immer nur aus Kern-Python-Versionen und nicht aus anderen Distributionen. Die längere Form (-V:3) wählt jedoch aus beliebigen aus.

Das Unternehmen wird anhand der vollständigen Zeichenfolge abgeglichen, unabhängig von Groß- und Kleinschreibung. Der Tag wird entweder anhand der vollständigen Zeichenfolge oder eines Präfixes abgeglichen, vorausgesetzt, das nächste Zeichen ist ein Punkt oder ein Bindestrich. Dies ermöglicht -V:3.1, 3.1-32 zu entsprechen, aber nicht 3.10. Tags werden nach numerischer Reihenfolge sortiert (3.10 ist neuer als 3.1), aber textuell verglichen (-V:3.01 entspricht nicht 3.1).

4.12.1.2. Virtuelle Umgebungen

Hinzugefügt in Version 3.5.

Wenn der Launcher ohne explizite Python-Versionsangabe ausgeführt wird und eine virtuelle Umgebung (erstellt mit dem Modul venv der Standardbibliothek oder dem externen Werkzeug virtualenv) aktiv ist, führt der Launcher den Interpreter der virtuellen Umgebung anstelle des globalen aus. Um den globalen Interpreter auszuführen, deaktivieren Sie die virtuelle Umgebung oder geben Sie explizit die globale Python-Version an.

4.12.1.3. Aus einem Skript

Erstellen wir ein Test-Python-Skript – erstellen Sie eine Datei namens hello.py mit folgendem Inhalt

#! python
import sys
sys.stdout.write("hello from Python %s\n" % (sys.version,))

Führen Sie aus dem Verzeichnis, in dem sich hello.py befindet, den Befehl aus

py hello.py

Sie sollten die Versionsnummer Ihrer neuesten Python 2.x-Installation ausgegeben sehen. Ändern Sie nun die erste Zeile zu

#! python3

Wenn Sie den Befehl erneut ausführen, sollten nun die neuesten Python 3.x-Informationen ausgegeben werden. Wie bei den obigen Befehlszeilenbeispielen können Sie einen expliziteren Versionsqualifikator angeben. Angenommen, Sie haben Python 3.7 installiert, versuchen Sie, die erste Zeile in #! python3.7 zu ändern, und Sie sollten die Versionsinformationen für 3.7 ausgegeben sehen.

Beachten Sie, dass im Gegensatz zur interaktiven Verwendung ein einfaches „python“ die neueste von Ihnen installierte Version von Python 2.x verwendet. Dies dient der Abwärtskompatibilität und der Kompatibilität mit Unix, wo der Befehl python typischerweise auf Python 2 verweist.

4.12.1.4. Über Dateizuordnungen

Der Launcher sollte bei der Installation mit Python-Dateien (d. h. .py, .pyw, .pyc-Dateien) verknüpft worden sein. Das bedeutet, dass der Launcher verwendet wird, wenn Sie auf eine dieser Dateien im Windows Explorer doppelklicken. Daher können Sie dieselben Einrichtungen wie oben beschrieben nutzen, um das Skript die zu verwendende Version festlegen zu lassen.

Der Hauptvorteil besteht darin, dass ein einzelner Launcher mehrere Python-Versionen gleichzeitig unterstützen kann, abhängig vom Inhalt der ersten Zeile.

4.12.2. Shebang-Zeilen

Wenn die erste Zeile einer Skriptdatei mit #! beginnt, wird sie als „Shebang“-Zeile bezeichnet. Linux und andere Unix-ähnliche Betriebssysteme haben native Unterstützung für solche Zeilen, und sie werden auf diesen Systemen üblicherweise verwendet, um anzugeben, wie ein Skript ausgeführt werden soll. Dieser Launcher ermöglicht die gleiche Funktionalität für Python-Skripte unter Windows, und die obigen Beispiele demonstrieren ihre Verwendung.

Um Shebang-Zeilen in Python-Skripten zwischen Unix und Windows portierbar zu machen, unterstützt dieser Launcher eine Reihe von „virtuellen“ Befehlen, um anzugeben, welcher Interpreter verwendet werden soll. Die unterstützten virtuellen Befehle sind

  • /usr/bin/env

  • /usr/bin/python

  • /usr/local/bin/python

  • python

Wenn die erste Zeile Ihres Skripts beispielsweise mit

#! /usr/bin/python

Die Standard-Python-Installation oder eine aktive virtuelle Umgebung wird gefunden und verwendet. Da viele Python-Skripte, die für Unix geschrieben wurden, bereits diese Zeile enthalten, sollten Sie feststellen, dass diese Skripte vom Launcher ohne Änderung verwendet werden können. Wenn Sie unter Windows ein neues Skript schreiben, das Sie hoffentlich unter Unix verwenden möchten, sollten Sie eine der Shebang-Zeilen verwenden, die mit /usr beginnen.

Jeder der oben genannten virtuellen Befehle kann mit einer expliziten Version (entweder nur der Hauptversion oder der Haupt- und Nebenversion) ergänzt werden. Darüber hinaus kann die 32-Bit-Version angefordert werden, indem nach der Nebenversion „-32“ hinzugefügt wird. D. h. /usr/bin/python3.7-32 fordert die Verwendung des 32-Bit-Python 3.7 an. Wenn eine virtuelle Umgebung aktiv ist, wird die Version ignoriert und die Umgebung verwendet.

Hinzugefügt in Version 3.7: Ab Python Launcher 3.7 ist es möglich, die 64-Bit-Version mit dem Suffix „-64“ anzufordern. Darüber hinaus ist es möglich, eine Hauptversion und eine Architektur ohne Nebenversion anzugeben (z. B. /usr/bin/python3-64).

Geändert in Version 3.11: Das Suffix „-64“ ist veraltet und bedeutet nun „jede Architektur, die nicht nachweislich i386/32-Bit ist“. Um eine bestimmte Umgebung anzufordern, verwenden Sie das neue Argument -V:TAG mit dem vollständigen Tag.

Geändert in Version 3.13: Virtuelle Befehle, die auf python verweisen, bevorzugen nun eine aktive virtuelle Umgebung, anstatt den PATH zu durchsuchen. Dies behandelt Fälle, in denen die Shebang-Zeile /usr/bin/env python3 angibt, aber python3.exe nicht in der aktiven Umgebung vorhanden ist.

Die Form /usr/bin/env der Shebang-Zeile hat eine weitere besondere Eigenschaft. Bevor nach installierten Python-Interpretern gesucht wird, durchsucht diese Form den ausführbaren PATH nach einer Python-Ausführungsdatei, die dem als erstes Argument angegebenen Namen entspricht. Dies entspricht dem Verhalten des Unix-Befehls env, der eine PATH-Suche durchführt. Wenn eine ausführbare Datei, die dem ersten Argument nach dem env-Befehl entspricht, nicht gefunden wird, aber das Argument mit python beginnt, wird sie wie für die anderen virtuellen Befehle beschrieben behandelt. Die Umgebungsvariable PYLAUNCHER_NO_SEARCH_PATH kann gesetzt werden (auf beliebigen Wert), um diese Suche im PATH zu überspringen.

Shebang-Zeilen, die keinem dieser Muster entsprechen, werden im Abschnitt [commands] der .INI-Datei des Launchers nachgeschlagen. Dies kann verwendet werden, um bestimmte Befehle so zu behandeln, dass sie für Ihr System sinnvoll sind. Der Name des Befehls muss ein einzelnes Argument sein (keine Leerzeichen in der Shebang-Ausführungsdatei), und der substituierte Wert ist der vollständige Pfad zur ausführbaren Datei (zusätzliche im .INI angegebene Argumente werden als Teil des Dateinamens zitiert).

[commands]
/bin/xpython=C:\Program Files\XPython\python.exe

Alle Befehle, die nicht in der .INI-Datei gefunden werden, werden als **Windows**-Ausführbare-Pfade behandelt, die absolut oder relativ zum Verzeichnis sind, das die Skriptdatei enthält. Dies ist eine Erleichterung für reine Windows-Skripte, wie z. B. von einem Installer generierte, da das Verhalten nicht mit Unix-Shells kompatibel ist. Diese Pfade können zitiert werden und mehrere Argumente enthalten, danach werden der Pfad zum Skript und alle zusätzlichen Argumente angehängt.

4.12.3. Argumente in Shebang-Zeilen

Die Shebang-Zeilen können auch zusätzliche Optionen angeben, die an den Python-Interpreter übergeben werden sollen. Wenn Sie beispielsweise eine Shebang-Zeile haben

#! /usr/bin/python -v

Dann wird Python mit der Option -v gestartet.

4.12.4. Anpassung

4.12.4.1. Anpassung über INI-Dateien

Zwei .ini-Dateien werden vom Launcher durchsucht: py.ini im Anwendungsdatenverzeichnis des aktuellen Benutzers (%LOCALAPPDATA% oder $env:LocalAppData) und py.ini im selben Verzeichnis wie der Launcher. Dieselben .ini-Dateien werden sowohl für die „Konsolen“-Version des Launchers (d. h. py.exe) als auch für die „Windows“-Version (d. h. pyw.exe) verwendet.

Anpassungen, die im „Anwendungsverzeichnis“ angegeben sind, haben Vorrang vor denen, die sich neben der ausführbaren Datei befinden. Ein Benutzer, der möglicherweise keine Schreibrechte für die .ini-Datei neben dem Launcher hat, kann daher Befehle in dieser globalen .ini-Datei überschreiben.

4.12.4.2. Anpassen von Standard-Python-Versionen

In einigen Fällen kann ein Versionsqualifikator in einem Befehl enthalten sein, um zu bestimmen, welche Python-Version vom Befehl verwendet wird. Ein Versionsqualifikator beginnt mit einer Hauptversionsnummer und kann optional gefolgt von einem Punkt („.“) und einer Nebenversionsangabe werden. Darüber hinaus ist es möglich anzugeben, ob eine 32- oder 64-Bit-Implementierung angefordert werden soll, indem „-32“ oder „-64“ hinzugefügt wird.

Zum Beispiel hat eine Shebang-Zeile #!python keinen Versionsqualifikator, während #!python3 einen Versionsqualifikator hat, der nur eine Hauptversion angibt.

Wenn in einem Befehl keine Versionsqualifikatoren gefunden werden, kann die Umgebungsvariable PY_PYTHON gesetzt werden, um den Standard-Versionsqualifikator anzugeben. Wenn sie nicht gesetzt ist, ist der Standardwert „3“. Die Variable kann jeden Wert angeben, der auf der Befehlszeile übergeben werden kann, wie z. B. „3“, „3.7“, „3.7-32“ oder „3.7-64“. (Beachten Sie, dass die Option „-64“ erst ab dem Launcher, der mit Python 3.7 oder neuer geliefert wird, verfügbar ist.)

Wenn keine Nebenversionsqualifikatoren gefunden werden, kann die Umgebungsvariable PY_PYTHON{major} (wobei {major} der aktuell ermittelte Hauptversionsqualifikator ist) gesetzt werden, um die vollständige Version anzugeben. Wenn keine solche Option gefunden wird, zählt der Launcher die installierten Python-Versionen auf und verwendet die neueste Nebenversion, die für die Hauptversion gefunden wurde, was wahrscheinlich, aber nicht garantiert, die zuletzt installierte Version dieser Familie ist.

Auf 64-Bit-Windows-Systemen mit installierten 32-Bit- und 64-Bit-Implementierungen derselben Python-Version (Haupt.Neben) wird immer die 64-Bit-Version bevorzugt. Dies gilt sowohl für 32-Bit- als auch für 64-Bit-Implementierungen des Launchers – ein 32-Bit-Launcher wird eine 64-Bit-Python-Installation der angegebenen Version bevorzugen, wenn verfügbar. Dies geschieht, damit das Verhalten des Launchers vorhersehbar ist, wenn nur die installierten Versionen auf dem PC bekannt sind und unabhängig von der Reihenfolge der Installation (d. h. ohne zu wissen, ob zuletzt eine 32- oder 64-Bit-Version von Python und der entsprechende Launcher installiert wurde). Wie oben erwähnt, kann ein optionales Suffix „-32“ oder „-64“ an eine Versionsangabe angehängt werden, um dieses Verhalten zu ändern.

Beispiele

  • Wenn keine relevanten Optionen gesetzt sind, verwenden die Befehle python und python2 die neueste installierte Python 2.x-Version, und der Befehl python3 verwendet die neueste installierte Python 3.x-Version.

  • Der Befehl python3.7 wird keine Optionen konsultieren, da die Versionen vollständig angegeben sind.

  • Wenn PY_PYTHON=3 gesetzt ist, verwenden sowohl python als auch python3 die neueste installierte Python 3-Version.

  • Wenn PY_PYTHON=3.7-32 gesetzt ist, verwendet der Befehl python die 32-Bit-Implementierung von 3.7, während der Befehl python3 die neueste installierte Python-Version verwendet (PY_PYTHON wurde nicht berücksichtigt, da eine Hauptversion angegeben wurde).

  • Wenn PY_PYTHON=3 und PY_PYTHON3=3.7 gesetzt sind, verwenden sowohl python als auch python3 speziell 3.7.

Zusätzlich zu Umgebungsvariablen können dieselben Einstellungen in der .INI-Datei des Launchers konfiguriert werden. Der Abschnitt in der INI-Datei heißt [defaults] und der Schlüsselname ist derselbe wie bei den Umgebungsvariablen ohne das Präfix PY_ (beachten Sie, dass die Schlüsselnamen in der INI-Datei nicht zwischen Groß- und Kleinschreibung unterscheiden). Der Inhalt einer Umgebungsvariable überschreibt die in der INI-Datei angegebenen Werte.

Zum Beispiel

  • Das Setzen von PY_PYTHON=3.7 entspricht dem Inhalt der INI-Datei

[defaults]
python=3.7
  • Das Setzen von PY_PYTHON=3 und PY_PYTHON3=3.7 entspricht dem Inhalt der INI-Datei

[defaults]
python=3
python3=3.7

4.12.5. Diagnose

Wenn eine Umgebungsvariable PYLAUNCHER_DEBUG gesetzt ist (auf beliebigen Wert), gibt der Launcher Diagnoseinformationen nach stderr (d. h. auf die Konsole) aus. Obwohl diese Informationen gleichzeitig ausführlich *und* knapp sind, sollten sie es Ihnen ermöglichen zu sehen, welche Python-Versionen gefunden wurden, warum eine bestimmte Version ausgewählt wurde und welche exakte Befehlszeile zur Ausführung des Ziel-Pythons verwendet wurde. Sie sind hauptsächlich für Tests und Debugging gedacht.

4.12.6. Trockenlauf

Wenn eine Umgebungsvariable PYLAUNCHER_DRYRUN gesetzt ist (auf beliebigen Wert), gibt der Launcher den Befehl aus, den er ausgeführt hätte, startet aber Python nicht tatsächlich. Dies kann für Werkzeuge nützlich sein, die den Launcher verwenden möchten, um Python zu erkennen und dann direkt zu starten. Beachten Sie, dass der auf Standardausgabe geschriebene Befehl immer mit UTF-8 kodiert ist und möglicherweise nicht korrekt in der Konsole angezeigt wird.

4.12.7. Installation bei Bedarf

Wenn eine Umgebungsvariable PYLAUNCHER_ALLOW_INSTALL gesetzt ist (auf beliebigen Wert) und die angeforderte Python-Version nicht installiert ist, aber im Microsoft Store verfügbar ist, versucht der Launcher, sie zu installieren. Dies kann eine Benutzerinteraktion erfordern, um abgeschlossen zu werden, und Sie müssen den Befehl möglicherweise erneut ausführen.

Eine zusätzliche Variable PYLAUNCHER_ALWAYS_INSTALL bewirkt, dass der Launcher immer versucht, Python zu installieren, auch wenn es erkannt wird. Dies ist hauptsächlich für Tests gedacht (und sollte mit PYLAUNCHER_DRYRUN verwendet werden).

4.12.8. Rückgabecodes

Die folgenden Exit-Codes können vom Python-Launcher zurückgegeben werden. Leider gibt es keine Möglichkeit, diese von den Exit-Codes von Python selbst zu unterscheiden.

Die Namen der Codes sind wie in den Quellen verwendet und dienen nur zur Referenz. Es gibt keine Möglichkeit, sie abzurufen oder aufzulösen, außer durch Lesen dieser Seite. Einträge sind alphabetisch nach Namen sortiert.

Name

Wert

Beschreibung

RC_BAD_VENV_CFG

107

Eine pyvenv.cfg wurde gefunden, ist aber beschädigt.

RC_CREATE_PROCESS

101

Fehler beim Starten von Python.

RC_INSTALLING

111

Eine Installation wurde gestartet, aber der Befehl muss nach Abschluss erneut ausgeführt werden.

RC_INTERNAL_ERROR

109

Unerwarteter Fehler. Bitte melden Sie einen Fehler.

RC_NO_COMMANDLINE

108

Kontextzeile kann nicht vom Betriebssystem bezogen werden.

RC_NO_PYTHON

103

Die angeforderte Version kann nicht gefunden werden.

RC_NO_VENV_CFG

106

Eine pyvenv.cfg wurde benötigt, aber nicht gefunden.