1. Befehlszeile und Umgebung

Der CPython-Interpreter analysiert die Befehlszeile und die Umgebung auf verschiedene Einstellungen.

CPython Implementierungsdetail: Die Befehlszeilenschemata anderer Implementierungen können abweichen. Weitere Ressourcen finden Sie unter Alternative Implementierungen.

1.1. Befehlszeile

Beim Aufruf von Python können Sie eine der folgenden Optionen angeben.

python [-bBdEhiIOPqRsSuvVWx?] [-c command | -m module-name | script | - ] [args]

Der häufigste Anwendungsfall ist natürlich ein einfacher Aufruf eines Skripts.

python myscript.py

1.1.1. Schnittstellenoptionen

Die Schnittstelle des Interpreters ähnelt der der UNIX-Shell, bietet aber einige zusätzliche Aufrufmethoden.

  • Wenn der Interpreter mit einer verbundenen Standardeingabe (TTY-Gerät) aufgerufen wird, fordert er Befehle an und führt sie aus, bis ein EOF (End-of-File-Zeichen, das Sie unter UNIX mit Ctrl-D oder unter Windows mit Ctrl-Z, Enter erzeugen können) gelesen wird. Weitere Informationen zum interaktiven Modus finden Sie unter Interaktiver Modus.

  • Wenn der Interpreter mit einem Dateinamen als Argument oder mit einer Datei als Standardeingabe aufgerufen wird, liest und führt er ein Skript aus dieser Datei aus.

  • Wenn der Interpreter mit einem Verzeichnisnamen als Argument aufgerufen wird, liest und führt er ein entsprechend benanntes Skript aus diesem Verzeichnis aus.

  • Wenn der Interpreter mit -c Befehl aufgerufen wird, führt er die als Befehl angegebenen Python-Anweisungen aus. Hier kann Befehl mehrere durch Zeilenumbrüche getrennte Anweisungen enthalten. Führende Leerzeichen sind in Python-Anweisungen wichtig!

  • Wenn der Interpreter mit -m Modulname aufgerufen wird, wird das angegebene Modul im Python-Modulpfad gesucht und als Skript ausgeführt.

Im nicht-interaktiven Modus wird die gesamte Eingabe geparst, bevor sie ausgeführt wird.

Eine Schnittstellenoption beendet die Liste der vom Interpreter verarbeiteten Optionen. Alle nachfolgenden Argumente landen in sys.argv – beachten Sie, dass das erste Element, der Index Null (sys.argv[0]), eine Zeichenkette ist, die die Quelle des Programms widerspiegelt.

-c <Befehl>

Führt den Python-Code in Befehl aus. Befehl kann eine oder mehrere durch Zeilenumbrüche getrennte Anweisungen sein, mit wichtigen führenden Leerzeichen wie im normalen Modulcode.

Wenn diese Option angegeben wird, ist das erste Element von sys.argv "-c" und das aktuelle Verzeichnis wird am Anfang von sys.path hinzugefügt (wodurch Module in diesem Verzeichnis als Top-Level-Module importiert werden können).

Löst ein Audit-Ereignis cpython.run_command mit dem Argument command aus.

Geändert in Version 3.14: Befehl wird vor der Ausführung automatisch eingerückt.

-m <Modulname>

Durchsucht sys.path nach dem benannten Modul und führt dessen Inhalt als das Modul __main__ aus.

Da das Argument ein Modulname ist, dürfen Sie keine Dateiendung (.py) angeben. Der Modulname sollte ein gültiger absoluter Python-Modulname sein, aber die Implementierung erzwingt dies möglicherweise nicht immer (z. B. kann sie Ihnen erlauben, einen Namen zu verwenden, der einen Bindestrich enthält).

Paketnamen (einschließlich Namespace-Pakete) sind ebenfalls zulässig. Wenn ein Paketname anstelle eines normalen Moduls angegeben wird, führt der Interpreter <pkg>.__main__ als Hauptmodul aus. Dieses Verhalten ist bewusst ähnlich der Behandlung von Verzeichnissen und Zip-Dateien, die dem Interpreter als Skript-Argument übergeben werden.

Hinweis

Diese Option kann nicht mit integrierten Modulen und Erweiterungsmodulen verwendet werden, die in C geschrieben sind, da diese keine Python-Moduldateien haben. Sie kann jedoch auch für vorkompilierte Module verwendet werden, selbst wenn die ursprüngliche Quelldatei nicht verfügbar ist.

Wenn diese Option angegeben wird, ist das erste Element von sys.argv der vollständige Pfad zur Moduldatei (während das Modul gesucht wird, wird das erste Element auf "-m" gesetzt). Wie bei der -c-Option wird das aktuelle Verzeichnis am Anfang von sys.path hinzugefügt.

Die Option -I kann verwendet werden, um das Skript im isolierten Modus auszuführen, wobei sys.path weder das aktuelle Verzeichnis noch das Verzeichnis der Benutzer-Site-Packages enthält. Alle PYTHON*-Umgebungsvariablen werden ebenfalls ignoriert.

Viele Standardbibliotheksmodule enthalten Code, der bei ihrer Ausführung als Skript aufgerufen wird. Ein Beispiel ist das Modul timeit.

python -m timeit -s "setup here" "benchmarked code here"
python -m timeit -h # for details

Löst ein Audit-Ereignis cpython.run_module mit dem Argument module-name aus.

Siehe auch

runpy.run_module()

Gleiche Funktionalität direkt für Python-Code verfügbar.

PEP 338 – Ausführen von Modulen als Skripte

Geändert in Version 3.1: Geben Sie den Paketnamen an, um ein __main__-Untermodul auszuführen.

Geändert in Version 3.4: Namespace-Pakete werden ebenfalls unterstützt.

-

Liest Befehle von der Standardeingabe (sys.stdin). Wenn die Standardeingabe ein Terminal ist, wird -i impliziert.

Wenn diese Option angegeben wird, ist das erste Element von sys.argv "-" und das aktuelle Verzeichnis wird am Anfang von sys.path hinzugefügt.

Löst ein Audit-Ereignis cpython.run_stdin ohne Argumente aus.

<Skript>

Führt den Python-Code aus, der in Skript enthalten ist, was ein Dateisystempfad (absolut oder relativ) sein muss, der entweder auf eine Python-Datei, ein Verzeichnis mit einer __main__.py-Datei oder eine Zip-Datei mit einer __main__.py-Datei verweist.

Wenn diese Option angegeben wird, ist das erste Element von sys.argv der auf der Befehlszeile angegebene Skriptname.

Wenn der Skriptname direkt auf eine Python-Datei verweist, wird das Verzeichnis, das diese Datei enthält, am Anfang von sys.path hinzugefügt, und die Datei wird als Modul __main__ ausgeführt.

Wenn der Skriptname auf ein Verzeichnis oder eine Zip-Datei verweist, wird der Skriptname am Anfang von sys.path hinzugefügt und die Datei __main__.py an diesem Ort wird als Modul __main__ ausgeführt.

Die Option -I kann verwendet werden, um das Skript im isolierten Modus auszuführen, wobei sys.path weder das Verzeichnis des Skripts noch das Verzeichnis der Benutzer-Site-Packages enthält. Alle PYTHON*-Umgebungsvariablen werden ebenfalls ignoriert.

Löst ein Audit-Ereignis cpython.run_file mit dem Argument filename aus.

Siehe auch

runpy.run_path()

Gleiche Funktionalität direkt für Python-Code verfügbar.

Wenn keine Schnittstellenoption angegeben wird, wird -i impliziert, sys.argv[0] ist eine leere Zeichenkette ("") und das aktuelle Verzeichnis wird am Anfang von sys.path hinzugefügt. Außerdem werden Tab-Vervollständigung und Verlaufbearbeitung automatisch aktiviert, sofern auf Ihrer Plattform verfügbar (siehe Readline-Konfiguration).

Geändert in Version 3.4: Automatische Aktivierung von Tab-Vervollständigung und Verlaufbearbeitung.

1.1.2. Allgemeine Optionen

-?
-h
--help

Gibt eine kurze Beschreibung aller Befehlszeilenoptionen und der entsprechenden Umgebungsvariablen aus und beendet sich dann.

--help-env

Gibt eine kurze Beschreibung Python-spezifischer Umgebungsvariablen aus und beendet sich dann.

Hinzugefügt in Version 3.11.

--help-xoptions

Gibt eine Beschreibung implementierungsspezifischer -X-Optionen aus und beendet sich dann.

Hinzugefügt in Version 3.11.

--help-all

Gibt die vollständigen Nutzungsinformationen aus und beendet sich dann.

Hinzugefügt in Version 3.11.

-V
--version

Gibt die Python-Versionsnummer aus und beendet sich dann. Ein Beispiel für die Ausgabe könnte sein:

Python 3.8.0b2+

Wenn zweimal angegeben, werden weitere Informationen zum Build ausgegeben, wie z. B.:

Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00)
[GCC 6.2.0 20161005]

Hinzugefügt in Version 3.6: Die Option -VV.

1.1.3. Verschiedene Optionen

-b

Gibt eine Warnung aus, wenn bytes oder bytearray ohne Angabe einer Kodierung in str konvertiert wird oder wenn bytes oder bytearray mit str oder bytes mit int verglichen wird. Gibt einen Fehler aus, wenn die Option zweimal angegeben wird (-bb).

Geändert in Version 3.5: Betrifft auch Vergleiche von bytes mit int.

-B

Wenn angegeben, versucht Python beim Importieren von Quellmodulen nicht, .pyc-Dateien zu schreiben. Siehe auch PYTHONDONTWRITEBYTECODE.

--check-hash-based-pycs default|always|never

Steuert das Validierungsverhalten von hash-basierten .pyc-Dateien. Siehe Ungültigkeitsprüfung von Bytecode-Cache-Dateien (.pyc). Wenn auf default gesetzt, werden geprüfte und ungeprüfte hash-basierte Bytecode-Cache-Dateien gemäß ihren Standardsemantik geprüft. Wenn auf always gesetzt, werden alle hash-basierten .pyc-Dateien, ob geprüft oder ungeprüft, gegen ihre entsprechenden Quelldateien validiert. Wenn auf never gesetzt, werden hash-basierte .pyc-Dateien nicht gegen ihre entsprechenden Quelldateien validiert.

Die Semantik von timestamp-basierten .pyc-Dateien wird von dieser Option nicht beeinflusst.

-d

Aktiviert die Debug-Ausgabe des Parsers (nur für Experten). Siehe auch die Umgebungsvariable PYTHONDEBUG.

Diese Option erfordert eine Debug-Build von Python, andernfalls wird sie ignoriert.

-E

Ignoriert alle gesetzten PYTHON*-Umgebungsvariablen, z. B. PYTHONPATH und PYTHONHOME.

Siehe auch die Optionen -P und -I (isoliert).

-i

Gibt nach der Ausführung den interaktiven Modus ein.

Die Verwendung der Option -i tritt in den interaktiven Modus unter folgenden Umständen ein:

  • Wenn ein Skript als erstes Argument übergeben wird.

  • Wenn die Option -c verwendet wird.

  • Wenn die Option -m verwendet wird.

Der interaktive Modus wird gestartet, auch wenn sys.stdin kein Terminal zu sein scheint. Die Datei PYTHONSTARTUP wird nicht gelesen.

Dies kann nützlich sein, um globale Variablen oder eine Stapelverfolgung zu inspizieren, wenn ein Skript eine Ausnahme auslöst. Siehe auch PYTHONINSPECT.

-I

Führt Python im isolierten Modus aus. Dies impliziert auch die Optionen -E, -P und -s.

Im isolierten Modus enthält sys.path weder das Verzeichnis des Skripts noch das Verzeichnis der Benutzer-Site-Packages. Alle PYTHON*-Umgebungsvariablen werden ebenfalls ignoriert. Es können weitere Einschränkungen auferlegt werden, um zu verhindern, dass der Benutzer bösartigen Code einschleust.

Hinzugefügt in Version 3.4.

-O

Entfernt assert-Anweisungen und jeden Code, der vom Wert von __debug__ abhängig ist. Erweitert den Dateinamen für kompilierte (Bytecode-)Dateien, indem .opt-1 vor der .pyc-Erweiterung hinzugefügt wird (siehe PEP 488). Siehe auch PYTHONOPTIMIZE.

Geändert in Version 3.5: Ändert .pyc-Dateinamen gemäß PEP 488.

-OO

Macht dasselbe wie -O und verwirft zusätzlich Docstrings. Erweitert den Dateinamen für kompilierte (Bytecode-)Dateien, indem .opt-2 vor der .pyc-Erweiterung hinzugefügt wird (siehe PEP 488).

Geändert in Version 3.5: Ändert .pyc-Dateinamen gemäß PEP 488.

-P

Fügt keinen potenziell unsicheren Pfad am Anfang von sys.path ein.

  • python -m modul Befehlszeile: Fügt nicht das aktuelle Arbeitsverzeichnis hinzu.

  • python skript.py Befehlszeile: Fügt nicht das Verzeichnis des Skripts hinzu. Wenn es sich um einen symbolischen Link handelt, werden symbolische Links aufgelöst.

  • python -c code und python (REPL) Befehlszeilen: Fügt keinen leeren String hinzu, was das aktuelle Arbeitsverzeichnis bedeutet.

Siehe auch die Umgebungsvariable PYTHONSAFEPATH und die Optionen -E und -I (isoliert).

Hinzugefügt in Version 3.11.

-q

Unterdrückt die Anzeige der Copyright- und Versionsmeldungen, auch im interaktiven Modus.

Hinzugefügt in Version 3.2.

-R

Aktiviert die Hash-Randomisierung. Diese Option hat nur dann einen Effekt, wenn die Umgebungsvariable PYTHONHASHSEED auf etwas anderes als random gesetzt ist, da die Hash-Randomisierung standardmäßig aktiviert ist.

Auf früheren Python-Versionen aktiviert diese Option die Hash-Randomisierung, so dass die __hash__()-Werte von Zeichenketten- und Bytes-Objekten mit einem unvorhersehbaren Zufallswert "gesalzen" werden. Obwohl sie innerhalb eines einzelnen Python-Prozesses konstant bleiben, sind sie nicht zwischen wiederholten Aufrufen von Python vorhersagbar.

Die Hash-Randomisierung soll Schutz vor Denial-of-Service-Angriffen bieten, die durch sorgfältig ausgewählte Eingaben verursacht werden und die schlechteste Fallleistung einer Wörterbuchkonstruktion, O(n2) Komplexität, ausnutzen. Details finden Sie unter http://ocert.org/advisories/ocert-2011-003.html.

PYTHONHASHSEED ermöglicht es Ihnen, einen festen Wert für das Hash-Seed-Geheimnis festzulegen.

Hinzugefügt in Version 3.2.3.

Geändert in Version 3.7: Die Option wird nicht mehr ignoriert.

-s

Fügt das Verzeichnis Benutzer-Site-Packages nicht zu sys.path hinzu.

Siehe auch PYTHONNOUSERSITE.

Siehe auch

PEP 370 – Benutzer-spezifisches Site-Packages-Verzeichnis

-S

Deaktiviert den Import des Moduls site und die damit verbundenen standortspezifischen Manipulationen von sys.path. Deaktiviert auch diese Manipulationen, wenn site später explizit importiert wird (rufen Sie site.main() auf, wenn Sie möchten, dass sie ausgelöst werden).

-u

Erzwingt, dass die Ströme stdout und stderr ungepuffert sind. Diese Option hat keine Auswirkung auf den stdin-Strom.

Siehe auch PYTHONUNBUFFERED.

Geändert in Version 3.7: Die Textschicht der stdout- und stderr-Ströme ist nun ungepuffert.

-v

Gibt eine Meldung aus, jedes Mal wenn ein Modul initialisiert wird, und zeigt den Ort (Dateiname oder eingebautes Modul) an, von dem es geladen wird. Wenn zweimal angegeben (-vv), gibt es für jede Datei, die beim Suchen nach einem Modul überprüft wird, eine Meldung aus. Liefert auch Informationen zur Modulbereinigung beim Beenden.

Geändert in Version 3.10: Das Modul site meldet die standortspezifischen Pfade und die verarbeiteten .pth-Dateien.

Siehe auch PYTHONVERBOSE.

-W arg

Warnungssteuerung. Die Python-Warnungsmaschine gibt standardmäßig Warnmeldungen auf sys.stderr aus.

Die einfachsten Einstellungen wenden eine bestimmte Aktion bedingungslos auf alle von einem Prozess ausgegebenen Warnungen an (auch solche, die standardmäßig ansonsten ignoriert werden).

-Wdefault  # Warn once per call location
-Werror    # Convert to exceptions
-Walways   # Warn every time
-Wall      # Same as -Walways
-Wmodule   # Warn once per calling module
-Wonce     # Warn once per Python process
-Wignore   # Never warn

Die Aktionsnamen können beliebig abgekürzt werden und der Interpreter löst sie zum entsprechenden Aktionsnamen auf. Zum Beispiel ist -Wi dasselbe wie -Wignore.

Die vollständige Form des Arguments ist

action:message:category:module:lineno

Leere Felder stimmen mit allen Werten überein; nachfolgende leere Felder können weggelassen werden. Zum Beispiel ignoriert -W ignore::DeprecationWarning alle DeprecationWarning-Warnungen.

Das Feld Aktion ist wie oben beschrieben, gilt aber nur für Warnungen, die mit den verbleibenden Feldern übereinstimmen.

Das Feld Nachricht muss mit der gesamten Warnmeldung übereinstimmen; diese Übereinstimmung ist nicht zwischen Groß- und Kleinschreibung zu unterscheiden.

Das Feld Kategorie stimmt mit der Warnungskategorie überein (z. B. DeprecationWarning). Dies muss ein Klassenname sein; die Übereinstimmung testet, ob die tatsächliche Warnungskategorie der Meldung eine Unterklasse der angegebenen Warnungskategorie ist.

Das Feld Modul stimmt mit dem (vollqualifizierten) Modulnamen überein; diese Übereinstimmung ist zwischen Groß- und Kleinschreibung zu unterscheiden.

Das Feld Zeilennummer stimmt mit der Zeilennummer überein, wobei Null mit allen Zeilennummern übereinstimmt und somit einer weggelassenen Zeilennummer entspricht.

Mehrere -W-Optionen können angegeben werden; wenn eine Warnung mit mehr als einer Option übereinstimmt, wird die Aktion der letzten übereinstimmenden Option ausgeführt. Ungültige -W-Optionen werden ignoriert (obwohl eine Warnmeldung über ungültige Optionen ausgegeben wird, wenn die erste Warnung ausgegeben wird).

Warnungen können auch über die Umgebungsvariable PYTHONWARNINGS und innerhalb eines Python-Programms über das Modul warnings gesteuert werden. Zum Beispiel kann die Funktion warnings.filterwarnings() verwendet werden, um einen regulären Ausdruck auf die Warnmeldung anzuwenden.

Weitere Details finden Sie unter Der Warnungsfilter und Beschreibung von Warnungsfiltern.

-x

Überspringt die erste Zeile der Quelle und ermöglicht die Verwendung von nicht-UNIX-Formen von #!cmd. Dies ist nur für einen DOS-spezifischen Hack gedacht.

-X

Reserviert für verschiedene implementierungsspezifische Optionen. CPython definiert derzeit die folgenden möglichen Werte:

  • -X faulthandler zur Aktivierung von faulthandler. Siehe auch PYTHONFAULTHANDLER.

    Hinzugefügt in Version 3.3.

  • -X showrefcount gibt die Gesamtzahl der Referenzen und die Anzahl der belegten Speicherblöcke aus, wenn das Programm beendet wird oder nach jeder Anweisung im interaktiven Interpreter. Dies funktioniert nur bei Debug-Builds.

    Hinzugefügt in Version 3.4.

  • -X tracemalloc startet die Verfolgung von Python-Speicherzuweisungen mit dem Modul tracemalloc. Standardmäßig wird nur der letzte Frame in einem Traceback eines Traces gespeichert. Verwenden Sie -X tracemalloc=NFRAME, um die Verfolgung mit einer Traceback-Grenze von NFRAME Frames zu starten. Weitere Informationen finden Sie unter tracemalloc.start() und PYTHONTRACEMALLOC.

    Hinzugefügt in Version 3.4.

  • -X int_max_str_digits konfiguriert die Begrenzung der Längenkonvertierung von Ganzzahl-Strings. Siehe auch PYTHONINTMAXSTRDIGITS.

    Hinzugefügt in Version 3.11.

  • -X importtime zeigt an, wie lange jeder Import dauert. Es werden der Modulname, die kumulative Zeit (einschließlich verschachtelter Imports) und die eigene Zeit (ohne verschachtelte Imports) angezeigt. Beachten Sie, dass die Ausgabe in Multithread-Anwendungen fehlerhaft sein kann. Eine typische Verwendung ist python -X importtime -c 'import asyncio'.

    -X importtime=2 aktiviert zusätzliche Ausgaben, die anzeigen, wann ein importiertes Modul bereits geladen wurde. In solchen Fällen wird in beiden Zeitspalten das Wort cached ausgegeben.

    Siehe auch PYTHONPROFILEIMPORTTIME.

    Hinzugefügt in Version 3.7.

    Geändert in Version 3.14: -X importtime=2 hinzugefügt, um auch Imports von bereits geladenen Modulen zu verfolgen, und Werte außer 1 und 2 für zukünftige Verwendung reserviert.

  • -X dev: aktiviert den Python Development Mode, der zusätzliche Laufzeitprüfungen einführt, die zu teuer sind, um standardmäßig aktiviert zu werden. Siehe auch PYTHONDEVMODE.

    Hinzugefügt in Version 3.7.

  • -X utf8 aktiviert den Python UTF-8 Modus. -X utf8=0 deaktiviert explizit den Python UTF-8 Modus (auch wenn er sonst automatisch aktiviert würde). Siehe auch PYTHONUTF8.

    Hinzugefügt in Version 3.7.

  • -X pycache_prefix=PATH schreibt .pyc-Dateien in einen parallelen Baum, der im angegebenen Verzeichnis wurzelt, anstatt in den Codebaum. Siehe auch PYTHONPYCACHEPREFIX.

    Hinzugefügt in Version 3.8.

  • -X warn_default_encoding gibt eine EncodingWarning aus, wenn die lokalspezifische Standardkodierung zum Öffnen von Dateien verwendet wird. Siehe auch PYTHONWARNDEFAULTENCODING.

    Hinzugefügt in Version 3.10.

  • -X no_debug_ranges deaktiviert die Einbindung der Tabellen, die zusätzliche Standortinformationen (Endzeile, Spaltenoffset Anfang und Spaltenoffset Ende) jedem Befehl in Codeobjekten zuordnen. Dies ist nützlich, wenn kleinere Codeobjekte und pyc-Dateien gewünscht werden und die zusätzlichen visuellen Standortanzeigen unterdrückt werden sollen, wenn der Interpreter Tracebacks anzeigt. Siehe auch PYTHONNODEBUGRANGES.

    Hinzugefügt in Version 3.11.

  • -X frozen_modules bestimmt, ob eingefrorene Module von der Importmaschine ignoriert werden oder nicht. Ein Wert von on bedeutet, dass sie importiert werden, und off bedeutet, dass sie ignoriert werden. Der Standardwert ist on, wenn es sich um ein installiertes Python handelt (der Normalfall). Wenn es sich um eine Entwicklung handelt (Ausführung aus dem Quellbaum), ist der Standardwert off. Beachten Sie, dass die eingefrorenen Module importlib_bootstrap und importlib_bootstrap_external immer verwendet werden, auch wenn dieses Flag auf off gesetzt ist. Siehe auch PYTHON_FROZEN_MODULES.

    Hinzugefügt in Version 3.11.

  • -X perf aktiviert die Unterstützung für den Linux perf Profiler. Wenn diese Option angegeben wird, kann der perf Profiler Python-Aufrufe melden. Diese Option ist nur auf einigen Plattformen verfügbar und bewirkt nichts, wenn sie auf dem aktuellen System nicht unterstützt wird. Der Standardwert ist "off". Siehe auch PYTHONPERFSUPPORT und Python-Unterstützung für den Linux perf-Profiler.

    Hinzugefügt in Version 3.12.

  • -X perf_jit aktiviert die Unterstützung für den Linux perf Profiler mit DWARF-Unterstützung. Wenn diese Option angegeben wird, kann der perf Profiler Python-Aufrufe unter Verwendung von DWARF-Informationen melden. Diese Option ist nur auf einigen Plattformen verfügbar und bewirkt nichts, wenn sie auf dem aktuellen System nicht unterstützt wird. Der Standardwert ist "off". Siehe auch PYTHON_PERF_JIT_SUPPORT und Python-Unterstützung für den Linux perf-Profiler.

    Hinzugefügt in Version 3.13.

  • -X disable_remote_debug deaktiviert die Remote-Debugging-Unterstützung, wie in PEP 768 beschrieben. Dies umfasst sowohl die Funktionalität zur Planung der Ausführung von Code in einem anderen Prozess als auch die Funktionalität zum Empfang von Code zur Ausführung im aktuellen Prozess.

    Diese Option ist nur auf einigen Plattformen verfügbar und bewirkt nichts, wenn sie auf dem aktuellen System nicht unterstützt wird. Siehe auch PYTHON_DISABLE_REMOTE_DEBUG und PEP 768.

    Hinzugefügt in Version 3.14.

  • -X cpu_count=n überschreibt os.cpu_count(), os.process_cpu_count() und multiprocessing.cpu_count(). n muss größer oder gleich 1 sein. Diese Option kann für Benutzer nützlich sein, die CPU-Ressourcen eines Container-Systems begrenzen müssen. Siehe auch PYTHON_CPU_COUNT. Wenn n default ist, wird nichts überschrieben.

    Hinzugefügt in Version 3.13.

  • -X presite=package.module gibt ein Modul an, das importiert werden soll, bevor das Modul site ausgeführt wird und bevor das Modul __main__ existiert. Daher ist das importierte Modul nicht __main__. Dies kann verwendet werden, um Code früh während der Python-Initialisierung auszuführen. Python muss im Debug-Modus kompiliert sein, damit diese Option existiert. Siehe auch PYTHON_PRESITE.

    Hinzugefügt in Version 3.13.

  • -X gil=0,1 erzwingt das Deaktivieren (0) oder Aktivieren (1) des GIL. Das Setzen auf 0 ist nur in Builds verfügbar, die mit --disable-gil konfiguriert wurden. Siehe auch PYTHON_GIL und Frei-Threaded CPython.

    Hinzugefügt in Version 3.13.

  • -X thread_inherit_context=0,1 bewirkt, dass Thread standardmäßig eine Kopie des Kontexts des Aufrufers von Thread.start() verwendet, wenn er gestartet wird. Andernfalls starten Threads mit einem leeren Kontext. Wenn nicht gesetzt, ist der Wert dieser Option standardmäßig 1 bei frei-threaded Builds und andernfalls 0. Siehe auch PYTHON_THREAD_INHERIT_CONTEXT.

    Hinzugefügt in Version 3.14.

  • -X context_aware_warnings=0,1 bewirkt, dass der warnings.catch_warnings Kontextmanager ein ContextVar verwendet, um den Warnungsfilterstatus zu speichern. Wenn nicht gesetzt, ist der Wert dieser Option standardmäßig 1 bei frei-threaded Builds und andernfalls 0. Siehe auch PYTHON_CONTEXT_AWARE_WARNINGS.

    Hinzugefügt in Version 3.14.

  • -X tlbc=0,1 aktiviert (1, der Standard) oder deaktiviert (0) Thread-lokalen Bytecode in Builds, die mit --disable-gil konfiguriert sind. Wenn deaktiviert, deaktiviert dies auch den spezialisierenden Interpreter. Siehe auch PYTHON_TLBC.

    Hinzugefügt in Version 3.14.

Es erlaubt auch das Übergeben beliebiger Werte und deren Abruf über das Dictionary sys._xoptions.

Hinzugefügt in Version 3.2.

Geändert in Version 3.9: Die Option -X showalloccount wurde entfernt.

Geändert in Version 3.10: Die Option -X oldparser wurde entfernt.

Entfernt in Version 3.14: -J ist nicht mehr für Jython reserviert und hat keine spezielle Bedeutung mehr.

1.1.4. Steuerung von Farben

Der Python-Interpreter ist standardmäßig so konfiguriert, dass er Farben verwendet, um die Ausgabe in bestimmten Situationen wie beim Anzeigen von Tracebacks hervorzuheben. Dieses Verhalten kann durch Setzen verschiedener Umgebungsvariablen gesteuert werden.

Das Setzen der Umgebungsvariablen TERM auf dumb deaktiviert Farben.

Wenn die Umgebungsvariable FORCE_COLOR gesetzt ist, werden Farben unabhängig vom Wert von TERM aktiviert. Dies ist nützlich auf CI-Systemen, die keine Terminals sind, aber dennoch ANSI-Escape-Sequenzen anzeigen können.

Wenn die Umgebungsvariable NO_COLOR gesetzt ist, deaktiviert Python alle Farben in der Ausgabe. Dies hat Vorrang vor FORCE_COLOR.

Alle diese Umgebungsvariablen werden auch von anderen Werkzeugen zur Steuerung der Farbausgabe verwendet. Um die Farbausgabe nur im Python-Interpreter zu steuern, kann die Umgebungsvariable PYTHON_COLORS verwendet werden. Diese Variable hat Vorrang vor NO_COLOR, was wiederum Vorrang vor FORCE_COLOR hat.

1.2. Umgebungsvariablen

Diese Umgebungsvariablen beeinflussen das Verhalten von Python; sie werden vor den Kommandozeilenoptionen außer -E oder -I verarbeitet. Es ist üblich, dass Kommandozeilenoptionen Umgebungsvariablen überschreiben, wenn ein Konflikt besteht.

PYTHONHOME

Ändert den Speicherort der Standard-Python-Bibliotheken. Standardmäßig werden die Bibliotheken in prefix/lib/pythonversion und exec_prefix/lib/pythonversion gesucht, wobei prefix und exec_prefix installationsabhängige Verzeichnisse sind, die beide standardmäßig auf /usr/local gesetzt sind.

Wenn PYTHONHOME auf ein einzelnes Verzeichnis gesetzt ist, ersetzt sein Wert sowohl prefix als auch exec_prefix. Um unterschiedliche Werte für diese anzugeben, setzen Sie PYTHONHOME auf prefix:exec_prefix.

PYTHONPATH

Erweitert den Standard-Suchpfad für Moduldateien. Das Format ist dasselbe wie bei der Shell-Variable PATH: ein oder mehrere Verzeichnispfade, getrennt durch os.pathsep (z. B. Doppelpunkte unter Unix oder Semikolons unter Windows). Nicht existierende Verzeichnisse werden stillschweigend ignoriert.

Zusätzlich zu normalen Verzeichnissen können einzelne PYTHONPATH-Einträge auf Zip-Dateien verweisen, die reine Python-Module enthalten (in Quell- oder kompilierter Form). Erweiterungsmodule können nicht aus Zip-Dateien importiert werden.

Der Standard-Suchpfad ist installationsabhängig, beginnt aber im Allgemeinen mit prefix/lib/pythonversion (siehe PYTHONHOME oben). Er wird *immer* an PYTHONPATH angehängt.

Ein zusätzliches Verzeichnis wird in den Suchpfad vor PYTHONPATH eingefügt, wie oben unter Schnittstellenoptionen beschrieben. Der Suchpfad kann aus einem Python-Programm heraus als Variable sys.path manipuliert werden.

PYTHONSAFEPATH

Wenn dies auf eine nicht-leere Zeichenkette gesetzt ist, wird kein potenziell unsicherer Pfad an sys.path angehängt: siehe die Option -P für Details.

Hinzugefügt in Version 3.11.

PYTHONPLATLIBDIR

Wenn dies auf eine nicht-leere Zeichenkette gesetzt ist, überschreibt sie den Wert von sys.platlibdir.

Hinzugefügt in Version 3.9.

PYTHONSTARTUP

Wenn dies der Name einer lesbaren Datei ist, werden die Python-Befehle in dieser Datei ausgeführt, bevor die erste Eingabeaufforderung im interaktiven Modus angezeigt wird. Die Datei wird im selben Namensraum ausgeführt, in dem interaktive Befehle ausgeführt werden, so dass Objekte, die darin definiert oder importiert werden, ohne Qualifizierung in der interaktiven Sitzung verwendet werden können. Sie können auch die Eingabeaufforderungen sys.ps1 und sys.ps2 und den Hook sys.__interactivehook__ in dieser Datei ändern.

Löst ein Audit-Ereignis cpython.run_startup mit dem Dateinamen als Argument aus, wenn es beim Start aufgerufen wird.

PYTHONOPTIMIZE

Wenn dies auf eine nicht-leere Zeichenkette gesetzt ist, ist dies gleichbedeutend mit der Angabe der Option -O. Wenn es auf eine Ganzzahl gesetzt ist, ist dies gleichbedeutend mit der mehrfachen Angabe von -O.

PYTHONBREAKPOINT

Wenn dies gesetzt ist, benennt es einen aufrufbaren Wert mittels Punktnotation. Das Modul, das den aufrufbaren Wert enthält, wird importiert und dann wird der aufrufbare Wert von der Standardimplementierung von sys.breakpointhook() aufgerufen, die selbst von der integrierten Funktion breakpoint() aufgerufen wird. Wenn nicht gesetzt oder als leere Zeichenkette gesetzt, ist dies gleichbedeutend mit dem Wert "pdb.set_trace". Das Setzen auf die Zeichenkette "0" bewirkt, dass die Standardimplementierung von sys.breakpointhook() nichts tut, außer sofort zurückzukehren.

Hinzugefügt in Version 3.7.

PYTHONDEBUG

Wenn dies auf eine nicht-leere Zeichenkette gesetzt ist, ist dies gleichbedeutend mit der Angabe der Option -d. Wenn es auf eine Ganzzahl gesetzt ist, ist dies gleichbedeutend mit der mehrfachen Angabe von -d.

Diese Umgebungsvariable erfordert einen Debug-Build von Python, andernfalls wird sie ignoriert.

PYTHONINSPECT

Wenn dies auf eine nicht-leere Zeichenkette gesetzt ist, ist dies gleichbedeutend mit der Angabe der Option -i.

Diese Variable kann auch durch Python-Code mit os.environ modifiziert werden, um den Inspeektionsmodus beim Programmabbruch zu erzwingen.

Löst ein Audit-Ereignis cpython.run_stdin ohne Argumente aus.

Geändert in Version 3.12.5: (auch 3.11.10, 3.10.15, 3.9.20 und 3.8.20) Gibt Audit-Ereignisse aus.

Geändert in Version 3.13: Verwendet PyREPL, wenn möglich. In diesem Fall wird auch PYTHONSTARTUP ausgeführt. Gibt Audit-Ereignisse aus.

PYTHONUNBUFFERED

Wenn dies auf eine nicht-leere Zeichenkette gesetzt ist, ist dies gleichbedeutend mit der Angabe der Option -u.

PYTHONVERBOSE

Wenn dies auf eine nicht-leere Zeichenkette gesetzt ist, ist dies gleichbedeutend mit der Angabe der Option -v. Wenn es auf eine Ganzzahl gesetzt ist, ist dies gleichbedeutend mit der mehrfachen Angabe von -v.

PYTHONCASEOK

Wenn dies gesetzt ist, ignoriert Python die Groß-/Kleinschreibung in import-Anweisungen. Dies funktioniert nur unter Windows und macOS.

PYTHONDONTWRITEBYTECODE

Wenn dies auf eine nicht-leere Zeichenkette gesetzt ist, versucht Python nicht, .pyc-Dateien beim Import von Quellmodulen zu schreiben. Dies ist gleichbedeutend mit der Angabe der Option -B.

PYTHONPYCACHEPREFIX

Wenn dies gesetzt ist, schreibt Python .pyc-Dateien in einen spiegelnden Verzeichnisbaum unter diesem Pfad, anstatt in __pycache__-Verzeichnisse innerhalb des Quellbaums. Dies ist gleichbedeutend mit der Angabe der Option -X pycache_prefix=PATH.

Hinzugefügt in Version 3.8.

PYTHONHASHSEED

Wenn diese Variable nicht gesetzt oder auf random gesetzt ist, wird ein zufälliger Wert verwendet, um die Hashes von str- und bytes-Objekten zu seeden.

Wenn PYTHONHASHSEED auf einen Ganzzahlwert gesetzt ist, wird dieser als fester Seed für die Erzeugung des Hash() der Typen verwendet, die von der Hash-Randomisierung abgedeckt werden.

Sein Zweck ist die Ermöglichung wiederholbarer Hashing-Vorgänge, z. B. für Selftests des Interpreters selbst oder um einem Cluster von Python-Prozessen das Teilen von Hash-Werten zu ermöglichen.

Die Ganzzahl muss eine Dezimalzahl im Bereich [0,4294967295] sein. Die Angabe des Werts 0 deaktiviert die Hash-Randomisierung.

Hinzugefügt in Version 3.2.3.

PYTHONINTMAXSTRDIGITS

Wenn diese Variable auf eine Ganzzahl gesetzt ist, wird sie zur Konfiguration der globalen Ganzzahl-String-Konvertierungslängenbegrenzung des Interpreters verwendet.

Hinzugefügt in Version 3.11.

PYTHONIOENCODING

Wenn dies vor der Ausführung des Interpreters gesetzt wird, überschreibt es die für stdin/stdout/stderr verwendete Kodierung im Format encodingname:errorhandler. Sowohl der Teil encodingname als auch der Teil :errorhandler sind optional und haben die gleiche Bedeutung wie in str.encode().

Für stderr wird der Teil :errorhandler ignoriert; der Handler wird immer 'backslashreplace' sein.

Geändert in Version 3.4: Der Teil encodingname ist jetzt optional.

Geändert in Version 3.6: Unter Windows wird die durch diese Variable angegebene Kodierung für interaktive Konsolenpuffer ignoriert, es sei denn, PYTHONLEGACYWINDOWSSTDIO wird ebenfalls angegeben. Dateien und Pipes, die über die Standard-Streams umgeleitet werden, sind nicht betroffen.

PYTHONNOUSERSITE

Wenn dies gesetzt ist, wird Python das Verzeichnis site-packages des Benutzers nicht zu sys.path hinzufügen.

Siehe auch

PEP 370 – Verzeichnis „site-packages“ pro Benutzer

PYTHONUSERBASE

Definiert das Basisverzeichnis des Benutzers, das zur Berechnung des Pfads für das Verzeichnis site-packages des Benutzers und für Installationspfade für python -m pip install --user verwendet wird.

Siehe auch

PEP 370 – Verzeichnis „site-packages“ pro Benutzer

PYTHONEXECUTABLE

Wenn diese Umgebungsvariable gesetzt ist, wird sys.argv[0] auf ihren Wert gesetzt, anstatt auf den Wert, der von der C-Laufzeitumgebung erhalten wird. Funktioniert nur unter macOS.

PYTHONWARNINGS

Dies ist äquivalent zur Option -W. Wenn es auf eine durch Kommas getrennte Zeichenkette gesetzt ist, ist es äquivalent zur mehrfachen Angabe von -W, wobei Filter später in der Liste Vorrang vor denen haben, die früher in der Liste stehen.

Die einfachsten Einstellungen wenden eine bestimmte Aktion bedingungslos auf alle von einem Prozess ausgegebenen Warnungen an (auch solche, die standardmäßig ansonsten ignoriert werden).

PYTHONWARNINGS=default  # Warn once per call location
PYTHONWARNINGS=error    # Convert to exceptions
PYTHONWARNINGS=always   # Warn every time
PYTHONWARNINGS=all      # Same as PYTHONWARNINGS=always
PYTHONWARNINGS=module   # Warn once per calling module
PYTHONWARNINGS=once     # Warn once per Python process
PYTHONWARNINGS=ignore   # Never warn

Weitere Details finden Sie unter Der Warnungsfilter und Beschreibung von Warnungsfiltern.

PYTHONFAULTHANDLER

Wenn diese Umgebungsvariable auf eine nicht leere Zeichenkette gesetzt ist, wird faulthandler.enable() beim Start aufgerufen: Ein Handler für die Signale SIGSEGV, SIGFPE, SIGABRT, SIGBUS und SIGILL wird installiert, um den Python-Traceback zu dumpen. Dies ist äquivalent zur Option -X faulthandler.

Hinzugefügt in Version 3.3.

PYTHONTRACEMALLOC

Wenn diese Umgebungsvariable auf eine nicht leere Zeichenkette gesetzt ist, beginnt die Nachverfolgung von Python-Speicherzuweisungen mithilfe des Moduls tracemalloc. Der Wert der Variablen gibt die maximale Anzahl von Frames an, die in einem Traceback eines Traces gespeichert werden. Zum Beispiel speichert PYTHONTRACEMALLOC=1 nur den letzten Frame. Weitere Informationen finden Sie in der Funktion tracemalloc.start(). Dies ist äquivalent zur Einstellung der Option -X tracemalloc.

Hinzugefügt in Version 3.4.

PYTHONPROFILEIMPORTTIME

Wenn diese Umgebungsvariable auf 1 gesetzt ist, zeigt Python an, wie lange jeder Import dauert. Wenn sie auf 2 gesetzt ist, schließt Python auch die Ausgabe für importierte Module ein, die bereits geladen wurden. Dies ist äquivalent zur Einstellung der Option -X importtime.

Hinzugefügt in Version 3.7.

Geändert in Version 3.14: Hinzugefügt PYTHONPROFILEIMPORTTIME=2, um auch Importe von geladenen Modulen zu verfolgen.

PYTHONASYNCIODEBUG

Wenn diese Umgebungsvariable auf eine nicht leere Zeichenkette gesetzt ist, wird der Debug-Modus des Moduls asyncio aktiviert.

Hinzugefügt in Version 3.4.

PYTHONMALLOC

Legt die Speicherallokatoren von Python fest und/oder installiert Debug-Hooks.

Legt die Familie der von Python verwendeten Speicherallokatoren fest

Installiert Debug-Hooks

  • debug: installiert Debug-Hooks über den Standard-Speicherallokatoren.

  • malloc_debug: wie malloc, installiert aber zusätzlich Debug-Hooks.

  • pymalloc_debug: wie pymalloc, installiert aber zusätzlich Debug-Hooks.

  • mimalloc_debug: wie mimalloc, installiert aber zusätzlich Debug-Hooks.

Hinzugefügt in Version 3.6.

Geändert in Version 3.7: Der Allocator "default" wurde hinzugefügt.

PYTHONMALLOCSTATS

Wenn dies auf eine nicht leere Zeichenkette gesetzt ist, gibt Python bei jeder Erstellung einer neuen Arena für pymalloc-Objekte und beim Herunterfahren Statistiken des pymalloc-Speicherallokators aus.

Diese Variable wird ignoriert, wenn die Umgebungsvariable PYTHONMALLOC verwendet wird, um den malloc()-Allocator der C-Bibliothek zu erzwingen, oder wenn Python ohne pymalloc-Unterstützung konfiguriert ist.

Geändert in Version 3.6: Diese Variable kann nun auch bei in Release-Modus kompiliertem Python verwendet werden. Sie hat nun keine Auswirkung mehr, wenn sie auf eine leere Zeichenkette gesetzt ist.

PYTHONLEGACYWINDOWSFSENCODING

Wenn dies auf eine nicht leere Zeichenkette gesetzt ist, kehrt der Standardmodus für Dateisystemkodierung und Fehlerbehandlung zu den Werten vor 3.6 zurück: „mbcs“ und „replace“. Andernfalls werden die neuen Standardwerte „utf-8“ und „surrogatepass“ verwendet.

Dies kann auch zur Laufzeit mit sys._enablelegacywindowsfsencoding() aktiviert werden.

Verfügbarkeit: Windows.

Hinzugefügt in Version 3.6: Siehe PEP 529 für weitere Details.

PYTHONLEGACYWINDOWSSTDIO

Wenn dies auf eine nicht leere Zeichenkette gesetzt ist, wird der neue Konsolenleser und -schreiber nicht verwendet. Das bedeutet, dass Unicode-Zeichen gemäß der aktiven Konsolen-Codierungsseite kodiert werden, anstatt UTF-8 zu verwenden.

Diese Variable wird ignoriert, wenn die Standardströme umgeleitet werden (in Dateien oder Pipes) und nicht auf Konsolenpuffer verweisen.

Verfügbarkeit: Windows.

Hinzugefügt in Version 3.6.

PYTHONCOERCECLOCALE

Wenn dies auf den Wert 0 gesetzt ist, überspringt die Haupt-Python-Befehlszeilenanwendung die Konvertierung der älteren ASCII-basierten C- und POSIX-Locales in eine leistungsfähigere UTF-8-basierte Alternative.

Wenn diese Variable *nicht* gesetzt ist (oder auf einen anderen Wert als 0 gesetzt ist), wird die Umgebungsvariable LC_ALL, die die Locale überschreibt, ebenfalls nicht gesetzt, und die für die Kategorie LC_CTYPE gemeldete aktuelle Locale ist entweder die Standard-Locale C oder die explizit ASCII-basierte Locale POSIX, dann versucht die Python-CLI, die folgenden Locales für die Kategorie LC_CTYPE in der angegebenen Reihenfolge zu konfigurieren, bevor die Interpreterlaufzeit geladen wird:

  • C.UTF-8

  • C.utf8

  • UTF-8

Wenn das Setzen einer dieser Locale-Kategorien erfolgreich ist, wird die Umgebungsvariable LC_CTYPE auch entsprechend in der aktuellen Prozessumgebung gesetzt, bevor die Python-Laufzeitumgebung initialisiert wird. Dies stellt sicher, dass die aktualisierte Einstellung nicht nur vom Interpreter selbst und anderen locale-fähigen Komponenten im selben Prozess (wie der GNU readline-Bibliothek) gesehen wird, sondern auch in Unterprozessen (unabhängig davon, ob diese Prozesse einen Python-Interpreter ausführen oder nicht) sowie in Operationen, die die Umgebung abfragen und nicht die aktuelle C-Locale (wie Pythons eigene locale.getdefaultlocale()).

Die Konfiguration einer dieser Locales (entweder explizit oder durch die oben genannte implizite Locale-Konvertierung) aktiviert automatisch den Fehlerbehandler surrogateescape für sys.stdin und sys.stdout (sys.stderr verwendet weiterhin backslashreplace, wie in jeder anderen Locale auch). Dieses Verhalten bei der Stream-Handhabung kann wie üblich mit PYTHONIOENCODING überschrieben werden.

Zu Debugging-Zwecken bewirkt das Setzen von PYTHONCOERCECLOCALE=warn, dass Python Warnmeldungen auf stderr ausgibt, wenn entweder die Locale-Konvertierung aktiviert wird oder wenn eine Locale, die eine Konvertierung ausgelöst *hätte*, immer noch aktiv ist, wenn die Python-Laufzeitumgebung initialisiert wird.

Beachten Sie auch, dass selbst wenn die Locale-Konvertierung deaktiviert ist oder wenn sie keine geeignete Ziel-Locale findet, PYTHONUTF8 in älteren ASCII-basierten Locales standardmäßig immer noch aktiviert wird. Beide Funktionen müssen deaktiviert sein, um den Interpreter zur Verwendung von ASCII anstelle von UTF-8 für Systemaufrufe zu zwingen.

Hinzugefügt in Version 3.7: Siehe PEP 538 für weitere Details.

PYTHONDEVMODE

Wenn diese Umgebungsvariable auf eine nicht leere Zeichenkette gesetzt ist, wird der Python-Entwicklermodus aktiviert, der zusätzliche Laufzeitprüfungen einführt, die zu kostspielig sind, um standardmäßig aktiviert zu werden. Dies ist äquivalent zur Einstellung der Option -X dev.

Hinzugefügt in Version 3.7.

PYTHONUTF8

Wenn dies auf 1 gesetzt ist, wird der Python UTF-8-Modus aktiviert.

Wenn dies auf 0 gesetzt ist, wird der Python UTF-8-Modus deaktiviert.

Das Setzen einer anderen nicht leeren Zeichenkette führt zu einem Fehler während der Interpreterinitialisierung.

Hinzugefügt in Version 3.7.

PYTHONWARNDEFAULTENCODING

Wenn diese Umgebungsvariable auf eine nicht leere Zeichenkette gesetzt ist, wird eine EncodingWarning ausgegeben, wenn die localespezifische Standardkodierung verwendet wird.

Siehe Opt-in EncodingWarning für Details.

Hinzugefügt in Version 3.10.

PYTHONNODEBUGRANGES

Wenn diese Variable gesetzt ist, wird die Einbeziehung der Tabellen, die zusätzliche Standortinformationen (Endzeile, Startspalten-Offset und Endspalten-Offset) mit jedem Befehl in Codeobjekten abbilden, deaktiviert. Dies ist nützlich, wenn kleinere Codeobjekte und pyc-Dateien gewünscht sind und die zusätzlichen visuellen Standortindikatoren unterdrückt werden sollen, wenn der Interpreter Tracebacks anzeigt.

Hinzugefügt in Version 3.11.

PYTHONPERFSUPPORT

Wenn diese Variable auf einen von Null verschiedenen Wert gesetzt ist, wird die Unterstützung für den Linux-Profiler perf aktiviert, damit Python-Aufrufe von ihm erkannt werden können.

Wenn auf 0 gesetzt, wird die Unterstützung für den Linux-Profiler perf deaktiviert.

Siehe auch die Kommandozeilenoption -X perf und Python-Unterstützung für den Linux perf-Profiler.

Hinzugefügt in Version 3.12.

PYTHON_PERF_JIT_SUPPORT

Wenn diese Variable auf einen von Null verschiedenen Wert gesetzt ist, wird die Unterstützung für den Linux-Profiler perf aktiviert, damit Python-Aufrufe von ihm unter Verwendung von DWARF-Informationen erkannt werden können.

Wenn auf 0 gesetzt, wird die Unterstützung für den Linux-Profiler perf deaktiviert.

Siehe auch die Kommandozeilenoption -X perf_jit und Python-Unterstützung für den Linux perf-Profiler.

Hinzugefügt in Version 3.13.

PYTHON_DISABLE_REMOTE_DEBUG

Wenn diese Variable auf eine nicht leere Zeichenkette gesetzt ist, wird die in PEP 768 beschriebene Remote-Debugging-Funktion deaktiviert. Dies umfasst sowohl die Funktionalität zur Planung der Ausführung von Code in einem anderen Prozess als auch die Funktionalität zum Empfangen von Code zur Ausführung im aktuellen Prozess.

Siehe auch die Kommandozeilenoption -X disable_remote_debug.

Hinzugefügt in Version 3.14.

PYTHON_CPU_COUNT

Wenn diese Variable auf eine positive Ganzzahl gesetzt ist, überschreibt sie die Rückgabewerte von os.cpu_count() und os.process_cpu_count().

Siehe auch die Kommandozeilenoption -X cpu_count.

Hinzugefügt in Version 3.13.

PYTHON_FROZEN_MODULES

Wenn diese Variable auf on oder off gesetzt ist, bestimmt sie, ob eingefrorene Module von der Importmechanik ignoriert werden oder nicht. Ein Wert von on bedeutet, dass sie importiert werden, und off bedeutet, dass sie ignoriert werden. Der Standardwert ist on für Nicht-Debug-Builds (der Normalfall) und off für Debug-Builds. Beachten Sie, dass die eingefrorenen Module importlib_bootstrap und importlib_bootstrap_external immer verwendet werden, auch wenn diese Einstellung auf off gesetzt ist.

Siehe auch die Kommandozeilenoption -X frozen_modules.

Hinzugefügt in Version 3.13.

PYTHON_COLORS

Wenn diese Variable auf 1 gesetzt ist, wird der Interpreter verschiedene Arten von Ausgaben farblich hervorheben. Das Setzen auf 0 deaktiviert dieses Verhalten. Siehe auch Steuerung der Farbe.

Hinzugefügt in Version 3.13.

PYTHON_BASIC_REPL

Wenn diese Variable auf einen beliebigen Wert gesetzt ist, versucht der Interpreter nicht, die Python-basierte REPL zu laden, die readline benötigt, und verwendet stattdessen die traditionelle Parser-basierte REPL.

Hinzugefügt in Version 3.13.

PYTHON_HISTORY

Diese Umgebungsvariable kann verwendet werden, um den Speicherort einer Datei .python_history festzulegen (standardmäßig ist es .python_history im Heimatverzeichnis des Benutzers).

Hinzugefügt in Version 3.13.

PYTHON_GIL

Wenn diese Variable auf 1 gesetzt ist, wird der globale Interpreter-Lock (GIL) erzwungen. Das Setzen auf 0 erzwingt das Ausschalten des GIL (erfordert, dass Python mit der Build-Option --disable-gil konfiguriert wurde).

Siehe auch die Kommandozeilenoption -X gil, die Vorrang vor dieser Variablen hat, und Free-threaded CPython.

Hinzugefügt in Version 3.13.

PYTHON_THREAD_INHERIT_CONTEXT

Wenn diese Variable auf 1 gesetzt ist, verwendet Thread standardmäßig eine Kopie des Kontexts des Aufrufers von Thread.start() beim Starten. Andernfalls starten neue Threads mit einem leeren Kontext. Wenn diese Variable nicht gesetzt ist, hat sie standardmäßig den Wert 1 bei Free-threaded Builds und 0 andernfalls. Siehe auch -X thread_inherit_context.

Hinzugefügt in Version 3.14.

PYTHON_CONTEXT_AWARE_WARNINGS

Wenn dies auf 1 gesetzt ist, verwendet der Kontextmanager warnings.catch_warnings ein ContextVar, um den Zustand des Warnungsfilters zu speichern. Wenn diese Variable nicht gesetzt ist, hat sie standardmäßig den Wert 1 bei Free-threaded Builds und 0 andernfalls. Siehe -X context_aware_warnings.

Hinzugefügt in Version 3.14.

PYTHON_JIT

Bei Builds, bei denen experimentelle Just-in-Time-Kompilierung verfügbar ist, kann diese Variable den JIT beim Start des Interpreters erzwingen (deaktiviert: 0) oder aktivieren (1).

Hinzugefügt in Version 3.13.

PYTHON_TLBC

Wenn auf 1 gesetzt, wird Thread-lokaler Bytecode aktiviert. Wenn auf 0 gesetzt, werden Thread-lokaler Bytecode und der spezialisierende Interpreter deaktiviert. Gilt nur für Builds, die mit --disable-gil konfiguriert wurden.

Siehe auch die Kommandozeilenoption -X tlbc.

Hinzugefügt in Version 3.14.

1.2.1. Variablen für den Debug-Modus

PYTHONDUMPREFS

Wenn gesetzt, wird Python Objekte und Referenzzählungen ausgeben, die nach dem Herunterfahren des Interpreters noch lebendig sind.

Erfordert, dass Python mit der Build-Option --with-trace-refs konfiguriert wurde.

PYTHONDUMPREFSFILE

Wenn gesetzt, wird Python Objekte und Referenzzählungen ausgeben, die nach dem Herunterfahren des Interpreters noch lebendig sind, in eine Datei unter dem als Wert für diese Umgebungsvariable angegebenen Pfad.

Erfordert, dass Python mit der Build-Option --with-trace-refs konfiguriert wurde.

Hinzugefügt in Version 3.11.

PYTHON_PRESITE

Wenn diese Variable auf ein Modul gesetzt ist, wird dieses Modul früh im Lebenszyklus des Interpreters importiert, bevor das Modul site ausgeführt wird und bevor das Modul __main__ erstellt wird. Daher wird das importierte Modul nicht als __main__ behandelt.

Dies kann verwendet werden, um Code früh während der Python-Initialisierung auszuführen.

Um ein Submodul zu importieren, verwenden Sie package.module als Wert, wie in einer Importanweisung.

Siehe auch die -X presite Kommandozeilenoption, die Vorrang vor dieser Variablen hat.

Benötigt Python, das mit der --with-pydebug Build-Option konfiguriert wurde.

Hinzugefügt in Version 3.13.