1. Befehlszeile und Umgebung
****************************

Der CPython-Interpreter durchsucht die Befehlszeile und die Umgebung
nach verschiedenen Einstellungen.

Die Befehlszeilen-Schemata anderer Umsetzungen können davon abweichen.
Weitere Quellen stehen unter Alternative Implementierungen.


1.1. Befehlszeile
=================

Beim Aufruf von Python kannst du jede dieser Optionen angeben:

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

Der häufigste Fall ist natürlich der einfache Aufruf eines Skripts:

   python myscript.py


1.1.1. Optionen der Schnittstelle
---------------------------------

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

* Wird er mit der Standardeingabe an einem tty-Gerät aufgerufen, fragt
  er nach Befehlen und führt sie aus, bis ein EOF gelesen wird (ein
  Dateiende-Zeichen, das du unter UNIX mit "Ctrl"-"D" und unter
  Windows mit "Ctrl"-"Z," "Enter" erzeugst). Mehr zum interaktiven
  Modus unter Interaktiver Modus.

* Wird er mit einem Dateinamen als Argument oder mit einer Datei als
  Standardeingabe aufgerufen, liest und führt er ein Skript aus dieser
  Datei aus.

* Wird er mit einem Verzeichnisnamen als Argument aufgerufen, liest
  und führt er ein passend benanntes Skript aus diesem Verzeichnis
  aus.

* Wird er mit "-c command" aufgerufen, führt er die als *command*
  angegebenen Python-Anweisungen aus. *command* darf dabei mehrere,
  durch Zeilenumbrüche getrennte Anweisungen enthalten.

* Wird er mit "-m module-name" aufgerufen, wird das angegebene Modul
  über den üblichen Importmechanismus gesucht und als Skript
  ausgeführt.

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

Eine Schnittstellenoption beendet die Liste der Optionen, die der
Interpreter verbraucht. Alle folgenden Argumente landen in "sys.argv"
— beachte, dass das erste Element, der Index null ("sys.argv[0]"),
eine Zeichenkette ist, die die Herkunft des Programms widerspiegelt.

-c <command>

   Führt den Python-Code in *command* aus. *command* kann eine oder
   mehrere durch Zeilenumbrüche getrennte Anweisungen sein, wobei
   führende Leerzeichen wie in gewöhnlichem Modulcode bedeutsam sind.

   Ist diese Option angegeben, ist das erste Element von "sys.argv"
   gleich ""-c"", und das aktuelle Verzeichnis wird an den Anfang von
   "sys.path" gestellt (sodass Module aus diesem Verzeichnis als
   Module der obersten Ebene importiert werden können).

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

   Geändert in Version 3.14: Bei *command* wird die Einrückung vor der
   Ausführung automatisch entfernt.

-m <module-name>

   Sucht das Modul über den üblichen Importmechanismus und führt
   seinen Inhalt als Modul "__main__" aus.

   Da das Argument der Name eines *Moduls* ist, darfst du keine
   Dateiendung angeben (".py"). Der Modulname sollte ein gültiger
   absoluter Python-Modulname sein, die Umsetzung erzwingt das aber
   nicht immer (sie erlaubt dir zum Beispiel möglicherweise einen
   Namen mit Bindestrich).

   Paketnamen (einschließlich Namespace-Pakete) sind ebenfalls
   erlaubt. Wird anstelle eines gewöhnlichen Moduls ein Paketname
   angegeben, führt der Interpreter "<pkg>.__main__" als Hauptmodul
   aus. Dieses Verhalten ist absichtlich dem Umgang mit Verzeichnissen
   und ZIP-Dateien nachempfunden, die dem Interpreter als
   Skriptargument übergeben werden.

   Bemerkung:

     Diese Option lässt sich nicht mit integrierten Modulen und mit in
     C geschriebenen Erweiterungsmodulen verwenden, weil diese keine
     Python-Moduldateien haben. Für vorkompilierte Module lässt sie
     sich dagegen verwenden, auch wenn die ursprüngliche Quelldatei
     nicht vorliegt.

   Ist diese Option angegeben, ist das erste Element von "sys.argv"
   der vollständige Pfad zur Moduldatei (während die Moduldatei
   gesucht wird, ist das erste Element auf ""-m"" gesetzt). Wie bei
   der Option "-c" wird das aktuelle Verzeichnis an den Anfang von
   "sys.path" gestellt.

   Mit der Option "-I" lässt sich das Skript im abgeschotteten Modus
   ausführen, in dem "sys.path" weder das aktuelle Verzeichnis noch
   das site-packages-Verzeichnis des Benutzers enthält. Alle
   Umgebungsvariablen "PYTHON*" werden dabei ebenfalls ignoriert.

   Viele Module der Standardbibliothek 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 Auditing-Ereignis "cpython.run_module" mit dem Argument
   "module-name" aus.

   Siehe auch:

     "runpy.run_module()"
        Gleichwertige Funktionalität, die Python-Code direkt zur
        Verfügung steht

     **PEP 338** -- Executing modules as scripts

   Geändert in Version 3.1: Gib den Paketnamen an, um ein Untermodul
   "__main__" auszuführen.

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

-

   Liest Befehle von der Standardeingabe ("sys.stdin"). Ist die
   Standardeingabe ein Terminal, gilt "-i" implizit.

   Ist diese Option angegeben, ist das erste Element von "sys.argv"
   gleich ""-"", und das aktuelle Verzeichnis wird an den Anfang von
   "sys.path" gestellt.

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

<script>

   Führt den Python-Code in *script* aus. *script* muss ein Pfad im
   Dateisystem sein (absolut oder relativ), der entweder auf eine
   Python-Datei, auf ein Verzeichnis mit einer Datei "__main__.py"
   oder auf eine ZIP-Datei mit einer Datei "__main__.py" verweist.

   Ist diese Option angegeben, ist das erste Element von "sys.argv"
   der Skriptname, wie er auf der Befehlszeile angegeben wurde.

   Verweist der Skriptname direkt auf eine Python-Datei, wird das
   Verzeichnis dieser Datei an den Anfang von "sys.path" gestellt und
   die Datei als Modul "__main__" ausgeführt.

   Verweist der Skriptname auf ein Verzeichnis oder eine ZIP-Datei,
   wird der Skriptname an den Anfang von "sys.path" gestellt und die
   Datei "__main__.py" an diesem Ort als Modul "__main__" ausgeführt.

   Mit der Option "-I" lässt sich das Skript im abgeschotteten Modus
   ausführen, in dem "sys.path" weder das Verzeichnis des Skripts noch
   das site-packages-Verzeichnis des Benutzers enthält. Alle
   Umgebungsvariablen "PYTHON*" werden dabei ebenfalls ignoriert.

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

   Siehe auch:

     "runpy.run_path()"
        Gleichwertige Funktionalität, die Python-Code direkt zur
        Verfügung steht

Ist keine Schnittstellenoption angegeben, gilt "-i" implizit,
"sys.argv[0]" ist eine leere Zeichenkette (""""), und das aktuelle
Verzeichnis wird an den Anfang von "sys.path" gestellt. Außerdem sind
Tabulator-Vervollständigung und das Bearbeiten der Eingabehistorie
automatisch eingeschaltet, sofern auf deiner Plattform verfügbar
(siehe Readline configuration).

Siehe auch: Aufrufen des Interpreters

Geändert in Version 3.4: Automatisches Einschalten von Tabulator-
Vervollständigung und Historienbearbeitung.


1.1.2. Allgemeine Optionen
--------------------------

-?
-h
--help

   Gibt eine kurze Beschreibung aller Befehlszeilenoptionen und der
   zugehörigen Umgebungsvariablen aus und beendet sich.

--help-env

   Gibt eine kurze Beschreibung der Python-spezifischen
   Umgebungsvariablen aus und beendet sich.

   Added in version 3.11.

--help-xoptions

   Gibt eine Beschreibung der umsetzungsspezifischen "-X"-Optionen aus
   und beendet sich.

   Added in version 3.11.

--help-all

   Gibt die vollständigen Verwendungshinweise aus und beendet sich.

   Added in version 3.11.

-V
--version

   Gibt die Python-Versionsnummer aus und beendet sich. Eine Ausgabe
   könnte so aussehen:

      Python 3.8.0b2+

   Zweimal angegeben, gibt sie mehr über den Build aus, etwa:

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

   Added 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" umgewandelt wird oder wenn "bytes"
   beziehungsweise "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".

   Veraltet ab Version 3.15: Die Befehlszeilenoptionen "-b" und "-bb"
   gelten als veraltet und sollen in Python 3.17 wirkungslos werden.
   Diese Optionen waren vor allem Hilfen für den Übergang von Python 2
   zu 3. Ab Python 3.17 wird in diesen Fällen keine "BytesWarning"
   mehr ausgelöst. Verwende stattdessen einen Typprüfer.

-B

   Ist sie angegeben, versucht Python nicht, beim Import von
   Quellmodulen ".pyc"-Dateien zu schreiben. Siehe auch
   "PYTHONDONTWRITEBYTECODE".

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

   Steuert das Prüfverhalten für hashbasierte ".pyc"-Dateien. Siehe
   Ungültigmachung von zwischengespeichertem Bytecode. Bei "default"
   werden geprüfte und ungeprüfte hashbasierte Bytecode-Cache-Dateien
   nach ihrer jeweiligen Standardbedeutung validiert. Bei "always"
   werden alle hashbasierten ".pyc"-Dateien gegen ihre zugehörige
   Quelldatei validiert, gleich ob geprüft oder ungeprüft. Bei "never"
   werden hashbasierte ".pyc"-Dateien nicht gegen ihre zugehörigen
   Quelldateien validiert.

   Die Bedeutung zeitstempelbasierter ".pyc"-Dateien bleibt von dieser
   Option unberührt.

-d

   Schaltet die Debug-Ausgabe des Parsers ein (nur für Fachleute).
   Siehe auch die Umgebungsvariable "PYTHONDEBUG".

   Diese Option setzt einen Debug-Build von Python voraus, andernfalls
   wird sie ignoriert.

-E

   Ignoriert alle gesetzten Umgebungsvariablen "PYTHON*", etwa
   "PYTHONPATH" und "PYTHONHOME".

   Siehe auch die Optionen "-P" und "-I" (abgeschottet).

-i

   Wechselt nach der Ausführung in den interaktiven Modus.

   Mit der Option "-i" wird in jedem der folgenden Fälle in den
   interaktiven Modus gewechselt:

   * Wenn ein Skript als erstes Argument übergeben wird

   * Wenn die Option "-c" verwendet wird

   * Wenn die Option "-m" verwendet wird

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

   Das kann nützlich sein, um globale Variablen oder einen Stack-Trace
   zu untersuchen, wenn ein Skript eine Ausnahme auslöst. Siehe auch
   "PYTHONINSPECT".

-I

   Führt Python im abgeschotteten Modus aus. Das zieht auch die
   Optionen "-E", "-P" und "-s" nach sich.

   Im abgeschotteten Modus enthält "sys.path" weder das Verzeichnis
   des Skripts noch das site-packages-Verzeichnis des Benutzers. Alle
   Umgebungsvariablen "PYTHON*" werden ebenfalls ignoriert. Weitere
   Einschränkungen können hinzukommen, um das Einschleusen von
   Schadcode durch den Benutzer zu verhindern.

   Added in version 3.4.

-O

   Entfernt assert-Anweisungen und jeden Code, der vom Wert von
   "__debug__" abhängt. Ergänzt den Dateinamen kompilierter Dateien
   (*Bytecode*) um ".opt-1" vor der Endung ".pyc" (siehe **PEP 488**).
   Siehe auch "PYTHONOPTIMIZE".

   Geändert in Version 3.5: Die ".pyc"-Dateinamen werden gemäß **PEP
   488** geändert.

-OO

   Wirkt wie "-O" und verwirft zusätzlich Docstrings. Ergänzt den
   Dateinamen kompilierter Dateien (*Bytecode*) um ".opt-2" vor der
   Endung ".pyc" (siehe **PEP 488**).

   Geändert in Version 3.5: Die ".pyc"-Dateinamen werden gemäß **PEP
   488** geändert.

-P

   Stellt keinen möglicherweise unsicheren Pfad an den Anfang von
   "sys.path":

   * Befehlszeile "python -m module": Das aktuelle Arbeitsverzeichnis
     wird nicht vorangestellt.

   * Befehlszeile "python script.py": Das Verzeichnis des Skripts wird
     nicht vorangestellt. Ist es eine symbolische Verknüpfung, werden
     symbolische Verknüpfungen aufgelöst.

   * Befehlszeilen "python -c code" und "python" (REPL): Es wird keine
     leere Zeichenkette vorangestellt, die für das aktuelle
     Arbeitsverzeichnis steht.

   Siehe auch die Umgebungsvariable "PYTHONSAFEPATH" sowie die
   Optionen "-E" und "-I" (abgeschottet).

   Added in version 3.11.

-q

   Zeigt die Copyright- und Versionsmeldungen auch im interaktiven
   Modus nicht an.

   Added in version 3.2.

-R

   Schaltet die Hash-Randomisierung ein. Diese Option wirkt nur, wenn
   die Umgebungsvariable "PYTHONHASHSEED" auf etwas anderes als
   "random" gesetzt ist, denn die Hash-Randomisierung ist
   standardmäßig eingeschaltet.

   In früheren Python-Versionen schaltet diese Option die Hash-
   Randomisierung ein, sodass die "__hash__()"-Werte von str- und
   bytes-Objekten mit einem unvorhersehbaren Zufallswert „gesalzen“
   werden. Innerhalb eines einzelnen Python-Prozesses bleiben sie zwar
   konstant, über wiederholte Python-Aufrufe hinweg sind sie jedoch
   nicht vorhersehbar.

   Die Hash-Randomisierung soll vor einem Denial-of-Service schützen,
   der durch sorgfältig gewählte Eingaben entsteht, die das Verhalten
   im schlechtesten Fall beim Aufbau eines dict ausnutzen – eine
   Komplexität von *O*(*n*^2). Einzelheiten unter
   https://ocert.org/advisories/ocert-2011-003.html.

   Mit "PYTHONHASHSEED" kannst du einen festen Wert für das Hash-Seed-
   Geheimnis setzen.

   Added in version 3.2.3.

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

-s

   Fügt das "site-packages-Verzeichnis des Benutzers" nicht zu
   "sys.path" hinzu.

   Siehe auch "PYTHONNOUSERSITE".

   Siehe auch: **PEP 370** -- site-packages-Verzeichnis pro Benutzer

-S

   Schaltet den Import des Moduls "site" und die damit verbundenen
   site-abhängigen Änderungen an "sys.path" ab. Diese Änderungen
   bleiben auch dann abgeschaltet, wenn "site" später ausdrücklich
   importiert wird (rufe "site.main()" auf, wenn du sie auslösen
   willst).

-u

   Erzwingt, dass die Ströme stdout und stderr ungepuffert sind. Auf
   den Strom stdin hat diese Option keine Wirkung.

   Siehe auch "PYTHONUNBUFFERED".

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

-v

   Gibt bei jeder Initialisierung eines Moduls eine Meldung aus, die
   den Ort nennt (Dateiname oder integriertes Modul), von dem es
   geladen wird. Zweimal angegeben ("-vv"), gibt sie für jede Datei
   eine Meldung aus, die bei der Suche nach einem Modul geprüft wird.
   Außerdem liefert sie Informationen zum Aufräumen der Module beim
   Beenden.

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

   Siehe auch "PYTHONVERBOSE".

-W arg

   Steuerung der Warnungen. Die Warnmaschinerie von Python gibt
   Warnmeldungen standardmäßig auf "sys.stderr" aus.

   Die einfachsten Einstellungen wenden eine bestimmte Aktion
   bedingungslos auf alle Warnungen an, die ein Prozess ausgibt (auch
   auf die, die sonst standardmäßig ignoriert werden):

      -Wdefault  # Einmal pro Aufrufstelle warnen
      -Werror    # In Ausnahmen umwandeln
      -Walways   # Jedes Mal warnen
      -Wall      # Dasselbe wie -Walways
      -Wmodule   # Einmal pro aufrufendem Modul warnen
      -Wonce     # Einmal pro Python-Prozess warnen
      -Wignore   # Niemals warnen

   Die Aktionsnamen lassen sich beliebig abkürzen, der Interpreter
   löst sie zum passenden Aktionsnamen auf. So ist "-Wi" dasselbe wie
   "-Wignore".

   Die vollständige Form des Arguments lautet:

      action:message:category:module:lineno

   Leere Felder passen auf alle Werte, nachgestellte leere Felder
   dürfen weggelassen werden. So ignoriert "-W
   ignore::DeprecationWarning" alle DeprecationWarning-Warnungen.

   Das Feld *action* wirkt wie oben beschrieben, gilt aber nur für
   Warnungen, die auf die übrigen Felder passen.

   Das Feld *message* muss auf den Anfang der Warnmeldung passen,
   wobei Groß- und Kleinschreibung keine Rolle spielt. Beginnt und
   endet es mit einem Schrägstrich ("/"), gibt es einen regulären
   Ausdruck an, andernfalls eine wörtliche Zeichenkette.

   Das Feld *category* passt auf die Warnkategorie (z. B.
   "DeprecationWarning"). Dabei muss es sich um einen Klassennamen
   handeln. Geprüft wird, ob die tatsächliche Warnkategorie der
   Meldung eine Unterklasse der angegebenen Warnkategorie ist.

   Das Feld *module* passt auf den (vollständig qualifizierten)
   Modulnamen, wobei Groß- und Kleinschreibung hier eine Rolle spielt.
   Beginnt und endet es mit einem Schrägstrich ("/"), gibt es einen
   regulären Ausdruck an, auf den der Anfang des vollständig
   qualifizierten Modulnamens passen muss, andernfalls eine wörtliche
   Zeichenkette, der der vollständig qualifizierte Modulname
   entsprechen muss.

   Das Feld *lineno* passt auf die Zeilennummer, wobei null auf alle
   Zeilennummern passt und damit einer weggelassenen Zeilennummer
   entspricht.

   Es können mehrere Optionen "-W" angegeben werden. Passt eine
   Warnung auf mehr als eine Option, wird die Aktion der letzten
   passenden Option ausgeführt. Ungültige Optionen "-W" werden
   ignoriert (allerdings wird beim Ausgeben der ersten Warnung eine
   Meldung über ungültige Optionen ausgegeben).

   Warnungen lassen sich auch über die Umgebungsvariable
   "PYTHONWARNINGS" und innerhalb eines Python-Programms über das
   Modul "warnings" steuern. Mit der Funktion
   "warnings.filterwarnings()" kannst du zum Beispiel einen regulären
   Ausdruck auf die Warnmeldung anwenden.

   Weitere Einzelheiten unter The Warnings Filter und Describing
   Warning Filters.

   Geändert in Version 3.15: Unterstützung regulärer Ausdrücke für
   *message* und *module* hinzugefügt.

-x

   Überspringt die erste Zeile des Quelltextes, sodass auch Nicht-
   Unix-Formen von "#!cmd" verwendet werden können.

   Damit lässt sich ein Python-Skript in eine Windows-Batchdatei
   verwandeln. Ähnlich wie beim Hinzufügen einer Shebang-Zeile und dem
   Setzen des Ausführungsbits unter Unix kannst du die Endung des
   Python-Skripts in ".bat" ändern und folgende Zeile am Anfang des
   Skripts einfügen:

      @py -x "%~f0" %* & exit /b

   Oder, um den Pfad zum Python-Interpreter ausdrücklich anzugeben:

      @"C:\Path\to\python.exe" -x "%~f0" %* & exit /b

   Anders als eine Shebang-Zeile, die ein Python-Kommentar ist, ist
   diese Zeile keine gültige Python-Syntax, deshalb braucht es die
   Option "-x", um sie zu überspringen.

-X

   Für verschiedene umsetzungsspezifische Optionen reserviert. CPython
   definiert derzeit die folgenden möglichen Werte:

   * "-X faulthandler" schaltet "faulthandler" ein. Siehe auch
     "PYTHONFAULTHANDLER".

     Added in version 3.3.

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

     Added in version 3.4.

   * "-X tracemalloc" beginnt damit, Python-Speicheranforderungen über
     das Modul "tracemalloc" mitzuschreiben. Standardmäßig wird im
     Traceback einer Aufzeichnung nur der jüngste Frame gespeichert.
     Mit "-X tracemalloc=NFRAME" beginnt das Mitschreiben mit einer
     Traceback-Grenze von *NFRAME* Frames. Mehr dazu unter
     "tracemalloc.start()" und "PYTHONTRACEMALLOC".

     Added in version 3.4.

   * "-X int_max_str_digits" stellt die Längenbegrenzung bei der
     Umwandlung zwischen Ganzzahl und Zeichenkette ein. Siehe auch
     "PYTHONINTMAXSTRDIGITS".

     Added in version 3.11.

   * "-X importtime" zeigt, wie lange jeder Import dauert. Es zeigt
     den Modulnamen, die aufsummierte Zeit (einschließlich
     verschachtelter Importe) und die Eigenzeit (ohne verschachtelte
     Importe). Beachte, dass die Ausgabe in einer Anwendung mit
     mehreren Threads durcheinandergeraten kann. Üblich ist der Aufruf
     "python -X importtime -c 'import asyncio'".

     "-X importtime=2" schaltet eine zusätzliche Ausgabe ein, die
     anzeigt, wenn ein importiertes Modul bereits geladen war. In
     diesen Fällen wird in beiden Zeitspalten die Zeichenkette
     "cached" ausgegeben.

     Siehe auch "PYTHONPROFILEIMPORTTIME".

     Added in version 3.7.

     Geändert in Version 3.14: "-X importtime=2" hinzugefügt, um auch
     Importe bereits geladener Module mitzuschreiben. Andere Werte als
     "1" und "2" sind für künftige Verwendung reserviert.

   * "-X dev": schaltet den Python-Entwicklungsmodus ein, der
     zusätzliche Prüfungen zur Laufzeit einführt, die zu aufwendig
     sind, um standardmäßig eingeschaltet zu sein. Siehe auch
     "PYTHONDEVMODE".

     Added in version 3.7.

   * "-X utf8" schaltet den Python-UTF-8-Modus ein. "-X utf8=0"
     schaltet den Python-UTF-8-Modus ausdrücklich ab (auch wenn er
     sich sonst automatisch einschalten würde). Siehe auch
     "PYTHONUTF8".

     Added in version 3.7.

   * "-X pycache_prefix=PATH" schreibt ".pyc"-Dateien in einen
     parallelen Baum unterhalb des angegebenen Verzeichnisses anstatt
     in den Codebaum. Siehe auch "PYTHONPYCACHEPREFIX".

     Added in version 3.8.

   * "-X warn_default_encoding" löst eine "EncodingWarning" aus, wenn
     beim Öffnen von Dateien die vom Gebietsschema abhängige
     Standardkodierung verwendet wird. Siehe auch
     "PYTHONWARNDEFAULTENCODING".

     Added in version 3.10.

   * "-X no_debug_ranges" schaltet das Mitführen der Tabellen ab, die
     jedem Befehl in Codeobjekten zusätzliche Ortsangaben zuordnen
     (Endzeile, Startspalte und Endspalte). Das ist nützlich, wenn
     kleinere Codeobjekte und pyc-Dateien gewünscht sind und wenn die
     zusätzlichen sichtbaren Ortsmarkierungen unterdrückt werden
     sollen, mit denen der Interpreter Tracebacks anzeigt. Siehe auch
     "PYTHONNODEBUGRANGES".

     Added in version 3.11.

   * "-X frozen_modules" legt fest, ob eingefrorene Module vom
     Importmechanismus ignoriert werden. Der Wert "on" bedeutet, dass
     sie importiert werden, "off", dass sie ignoriert werden. Standard
     ist "on" bei einem installierten Python (der Normalfall).
     Befindet es sich in Entwicklung (Ausführung aus dem Quellbaum),
     ist der Standard "off". Beachte, dass die eingefrorenen Module
     "importlib_bootstrap" und "importlib_bootstrap_external" immer
     verwendet werden, auch wenn dieser Schalter auf "off" steht.
     Siehe auch "PYTHON_FROZEN_MODULES".

     Added in version 3.11.

   * "-X perf" schaltet die Unterstützung für den Linux-Profiler
     "perf" ein. Ist diese Option angegeben, kann der Profiler "perf"
     Python-Aufrufe melden. Diese Option gibt es nur auf einigen
     Plattformen und sie tut nichts, wenn sie auf dem aktuellen System
     nicht unterstützt wird. Der Standardwert ist „off“. Siehe auch
     "PYTHONPERFSUPPORT" und Unterstützung von perf map-kompatiblen
     Profilern in Python.

     Added in version 3.12.

   * "-X perf_jit" schaltet die Unterstützung für den Linux-Profiler
     "perf" mit DWARF-Unterstützung ein. Ist diese Option angegeben,
     kann der Profiler "perf" Python-Aufrufe anhand von DWARF-
     Informationen melden. Diese Option gibt es nur auf einigen
     Plattformen und sie tut nichts, wenn sie auf dem aktuellen System
     nicht unterstützt wird. Der Standardwert ist „off“. Siehe auch
     "PYTHON_PERF_JIT_SUPPORT" und Unterstützung von perf map-
     kompatiblen Profilern in Python.

     Added in version 3.13.

   * "-X disable-remote-debug" disables the remote debugging support
     as described in **PEP 768**.  This includes both the
     functionality to schedule code for execution in another process
     and the functionality to receive code for execution in the
     current process.

     Diese Option gibt es nur auf einigen Plattformen und sie tut
     nichts, wenn sie auf dem aktuellen System nicht unterstützt wird.
     Siehe auch "PYTHON_DISABLE_REMOTE_DEBUG" und **PEP 768**.

     Added 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 nützlich sein,
     wenn die CPU-Ressourcen eines Container-Systems begrenzt werden
     müssen. Siehe auch "PYTHON_CPU_COUNT". Ist *n* gleich "default",
     wird nichts überschrieben.

     Added in version 3.13.

   * "-X presite=*module*" oder "-X presite=*module:func*" gibt einen
     Einstiegspunkt an, der ausgeführt werden soll, bevor das Modul
     "site" ausgeführt wird und bevor das Modul "__main__" existiert.
     Das importierte Modul ist deshalb nicht "__main__". Damit lässt
     sich früh während der Python-Initialisierung Code ausführen.
     Python muss im Debug-Modus gebaut sein, damit es diese Option
     gibt. Siehe auch "PYTHON_PRESITE".

     Geändert in Version 3.15: Das Einstiegspunktformat "module:func"
     wird ebenfalls akzeptiert.

     Added in version 3.13.

   * "-X gil=*0,1*" erzwingt, dass der GIL abgeschaltet
     beziehungsweise eingeschaltet wird. Der Wert "0" ist nur in
     Builds verfügbar, die mit "--disable-gil" konfiguriert sind.
     Siehe auch "PYTHON_GIL" und Free-Threaded CPython.

     Added in version 3.13.

   * "-X thread_inherit_context=*0,1*" lässt "Thread" beim Start
     standardmäßig eine Kopie des Kontexts des Aufrufers von
     "Thread.start()" verwenden. Andernfalls starten Threads mit einem
     leeren Kontext. Ist sie nicht gesetzt, ist der Standardwert
     dieser Option "1" bei Free-Threaded-Builds und sonst "0". Siehe
     auch "PYTHON_THREAD_INHERIT_CONTEXT".

     Added in version 3.14.

   * "-X context_aware_warnings=*0,1*" lässt den Kontextmanager
     "warnings.catch_warnings" eine "ContextVar" verwenden, um den
     Zustand des Warnfilters zu speichern. Ist sie nicht gesetzt, ist
     der Standardwert dieser Option "1" bei Free-Threaded-Builds und
     sonst "0". Siehe auch "PYTHON_CONTEXT_AWARE_WARNINGS".

     Added in version 3.14.

   * "-X pathconfig_warnings=*0,1*": Ist sie wahr ("1"), darf The
     initialization of the sys.path module search path Warnungen auf
     stderr schreiben. Ist sie falsch ("0"), werden diese Warnungen
     unterdrückt. Standardmäßig ist sie wahr. Siehe auch
     "PYTHON_PATHCONFIG_WARNINGS".

     Added in version 3.15.

   * "-X tlbc=*0,1*" schaltet threadlokalen Bytecode in Builds ein (1,
     der Standard) oder ab (0), die mit "--disable-gil" konfiguriert
     sind. Ist er abgeschaltet, ist damit auch der spezialisierende
     Interpreter abgeschaltet. Siehe auch "PYTHON_TLBC".

     Added in version 3.14.

   * "-X lazy_imports=*all,normal*" steuert das Verhalten beim
     verzögerten Import. "all" macht standardmäßig alle Importe
     verzögert, "normal" (der Standard) beachtet das Schlüsselwort
     "lazy" im Quelltext. Siehe auch "PYTHON_LAZY_IMPORTS".

     Added in version 3.15.

   Außerdem lassen sich damit beliebige Werte übergeben und über das
   Wörterbuch "sys._xoptions" abrufen.

   Added 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.

Removed in version 3.14: "-J" ist nicht mehr für Jython reserviert und
hat jetzt keine besondere Bedeutung mehr.


1.1.4. Farbsteuerung
--------------------

Der Python-Interpreter ist standardmäßig so eingestellt, dass er
Ausgaben in bestimmten Situationen farblich hervorhebt, etwa beim
Anzeigen von Tracebacks. Dieses Verhalten lässt sich über verschiedene
Umgebungsvariablen steuern.

Setzt du die Umgebungsvariable "TERM" auf "dumb", wird die Farbe
abgeschaltet.

Ist die Umgebungsvariable "FORCE_COLOR" gesetzt, wird die Farbe
unabhängig vom Wert von TERM eingeschaltet. Das ist nützlich auf CI-
Systemen, die keine Terminals sind, aber dennoch ANSI-Escape-Sequenzen
anzeigen können.

Ist die Umgebungsvariable "NO_COLOR" gesetzt, schaltet Python alle
Farbe in der Ausgabe ab. Das 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, lässt sich die Umgebungsvariable
"PYTHON_COLORS" verwenden. Diese Variable hat Vorrang vor "NO_COLOR",
das wiederum Vorrang vor "FORCE_COLOR" hat.


1.2. Umgebungsvariablen
=======================

Diese Umgebungsvariablen beeinflussen das Verhalten von Python.
Verarbeitet werden sie vor den Befehlszeilenschaltern, mit Ausnahme
von -E und -I. Üblicherweise haben Befehlszeilenschalter bei einem
Widerspruch Vorrang vor Umgebungsvariablen.

PYTHONHOME

   Ändert den Ort der Standard-Python-Bibliotheken. Standardmäßig
   werden die Bibliotheken in "*prefix*/lib/python*version*" und
   "*exec_prefix*/lib/python*version*" gesucht, wobei "*prefix*" und
   "*exec_prefix*" installationsabhängige Verzeichnisse sind, die
   beide standardmäßig "/usr/local" lauten.

   Ist "PYTHONHOME" auf ein einzelnes Verzeichnis gesetzt, ersetzt
   dieser Wert sowohl "*prefix*" als auch "*exec_prefix*". Um dafür
   unterschiedliche Werte anzugeben, setze "PYTHONHOME" auf
   "*prefix*:*exec_prefix*".

PYTHONPATH

   Erweitert den Standardsuchpfad für Moduldateien. Das Format
   entspricht dem von "PATH" in der Shell: ein oder mehrere
   Verzeichnispfade, getrennt durch "os.pathsep" (also Doppelpunkte
   unter Unix oder Semikolons unter Windows). Nicht vorhandene
   Verzeichnisse werden stillschweigend ignoriert.

   Neben gewöhnlichen Verzeichnissen dürfen einzelne Einträge in
   "PYTHONPATH" auch auf ZIP-Dateien verweisen, die reine Python-
   Module enthalten (im Quelltext oder kompiliert). Erweiterungsmodule
   lassen sich nicht aus ZIP-Dateien importieren.

   Der Standardsuchpfad ist installationsabhängig, beginnt aber in der
   Regel mit "*prefix*/lib/python*version*" (siehe "PYTHONHOME" oben).
   Er wird *immer* an "PYTHONPATH" angehängt.

   Ein zusätzliches Verzeichnis wird, wie oben unter Optionen der
   Schnittstelle beschrieben, im Suchpfad vor "PYTHONPATH" eingefügt.
   Der Suchpfad lässt sich innerhalb eines Python-Programms über die
   Variable "sys.path" verändern.

PYTHONSAFEPATH

   Ist sie auf eine nicht leere Zeichenkette gesetzt, wird kein
   möglicherweise unsicherer Pfad an den Anfang von "sys.path"
   gestellt. Einzelheiten dazu unter der Option "-P".

   Added in version 3.11.

PYTHONPLATLIBDIR

   Ist sie auf eine nicht leere Zeichenkette gesetzt, überschreibt sie
   den Wert von "sys.platlibdir".

   Added in version 3.9.

PYTHONSTARTUP

   Ist das der Name einer lesbaren Datei, werden die Python-Befehle in
   dieser Datei ausgeführt, bevor im interaktiven Modus die erste
   Eingabeaufforderung erscheint. Die Datei wird im selben Namensraum
   ausgeführt, in dem auch die interaktiven Befehle ausgeführt werden,
   sodass darin definierte oder importierte Objekte in der
   interaktiven Sitzung ohne Qualifizierung verwendet werden können.
   Du kannst in dieser Datei auch die Eingabeaufforderungen "sys.ps1"
   und "sys.ps2" sowie den Hook "sys.__interactivehook__" ändern.

   Löst beim Aufruf während des Starts ein Auditing-Ereignis
   "cpython.run_startup" mit dem Dateinamen als Argument aus.

PYTHONOPTIMIZE

   Ist sie auf eine nicht leere Zeichenkette gesetzt, entspricht das
   der Angabe der Option "-O". Ist sie auf eine Ganzzahl gesetzt,
   entspricht das der mehrfachen Angabe von "-O".

PYTHONBREAKPOINT

   Ist sie gesetzt, benennt sie ein aufrufbares Objekt in
   Punktschreibweise. Das Modul, das dieses Objekt enthält, wird
   importiert, und anschließend wird das Objekt von der
   Standardumsetzung von "sys.breakpointhook()" ausgeführt, die selbst
   von der integrierten Funktion "breakpoint()" aufgerufen wird. Ist
   sie nicht gesetzt oder auf die leere Zeichenkette gesetzt,
   entspricht das dem Wert „pdb.set_trace“. Setzt du sie auf die
   Zeichenkette „0“, tut die Standardumsetzung von
   "sys.breakpointhook()" nichts, sondern kehrt sofort zurück.

   Added in version 3.7.

PYTHONDEBUG

   Ist sie auf eine nicht leere Zeichenkette gesetzt, entspricht das
   der Angabe der Option "-d". Ist sie auf eine Ganzzahl gesetzt,
   entspricht das der mehrfachen Angabe von "-d".

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

PYTHONINSPECT

   Ist sie auf eine nicht leere Zeichenkette gesetzt, entspricht das
   der Angabe der Option "-i".

   Diese Variable lässt sich auch von Python-Code über "os.environ"
   verändern, um beim Programmende den Inspect-Modus zu erzwingen.

   Löst ein Auditing-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) Löst Auditing-Ereignisse aus.

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

PYTHONUNBUFFERED

   Ist sie auf eine nicht leere Zeichenkette gesetzt, entspricht das
   der Angabe der Option "-u".

PYTHONVERBOSE

   Ist sie auf eine nicht leere Zeichenkette gesetzt, entspricht das
   der Angabe der Option "-v". Ist sie auf eine Ganzzahl gesetzt,
   entspricht das der mehrfachen Angabe von "-v".

PYTHONCASEOK

   Ist sie gesetzt, ignoriert Python in "import"-Anweisungen die Groß-
   und Kleinschreibung. Das funktioniert nur unter Windows und macOS.

PYTHONDONTWRITEBYTECODE

   Ist sie auf eine nicht leere Zeichenkette gesetzt, versucht Python
   nicht, beim Import von Quellmodulen ".pyc"-Dateien zu schreiben.
   Das entspricht der Angabe der Option "-B".

PYTHONPYCACHEPREFIX

   Ist sie gesetzt, schreibt Python ".pyc"-Dateien in einen
   gespiegelten Verzeichnisbaum unter diesem Pfad anstatt in
   Verzeichnisse "__pycache__" innerhalb des Quellbaums. Das
   entspricht der Angabe der Option "-X" "pycache_prefix=PATH".

   Added in version 3.8.

PYTHONHASHSEED

   Ist diese Variable nicht gesetzt oder auf "random" gesetzt, wird
   ein Zufallswert als Startwert für die Hashes von str- und bytes-
   Objekten verwendet.

   Ist "PYTHONHASHSEED" auf einen ganzzahligen Wert gesetzt, wird
   dieser als fester Startwert verwendet, um hash() für die von der
   Hash-Randomisierung betroffenen Typen zu erzeugen.

   Das soll wiederholbares Hashing ermöglichen, etwa für Selbsttests
   des Interpreters selbst, oder es mehreren Python-Prozessen in einem
   Verbund erlauben, dieselben Hash-Werte zu verwenden.

   Die Ganzzahl muss eine Dezimalzahl im Bereich [0,4294967295] sein.
   Mit dem Wert 0 wird die Hash-Randomisierung abgeschaltet.

   Added in version 3.2.3.

PYTHONINTMAXSTRDIGITS

   Ist diese Variable auf eine Ganzzahl gesetzt, stellt sie die
   globale Längenbegrenzung bei der Umwandlung zwischen Ganzzahl und
   Zeichenkette des Interpreters ein.

   Added in version 3.11.

PYTHONIOENCODING

   Ist sie vor dem Start des Interpreters gesetzt, überschreibt sie
   die für stdin/stdout/stderr verwendete Kodierung, in der Form
   "encodingname:errorhandler". Sowohl der Teil "encodingname" als
   auch der Teil ":errorhandler" ist optional und hat dieselbe
   Bedeutung wie in "str.encode()".

   Bei stderr wird der Teil ":errorhandler" ignoriert, der Handler ist
   immer "'backslashreplace'".

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

   Geändert in Version 3.6: Unter Windows wird die von dieser Variable
   angegebene Kodierung bei interaktiven Konsolenpuffern ignoriert,
   sofern nicht zusätzlich "PYTHONLEGACYWINDOWSSTDIO" angegeben ist.
   Dateien und Pipes, die über die Standardströme umgeleitet werden,
   sind nicht betroffen.

PYTHONNOUSERSITE

   Das entspricht der Option "-s". Ist sie gesetzt, fügt Python das
   "site-packages-Verzeichnis des Benutzers" nicht zu "sys.path"
   hinzu.

   Siehe auch: **PEP 370** -- site-packages-Verzeichnis pro Benutzer

PYTHONUSERBASE

   Legt das "Basisverzeichnis des Benutzers" fest, aus dem der Pfad
   des "site-packages-Verzeichnisses des Benutzers" und die
   Installationspfade für "python -m pip install --user" berechnet
   werden.

   Wie du die site-packages des Benutzers abschaltest, steht unter
   "PYTHONNOUSERSITE" oder bei der Option "-s".

   Siehe auch: **PEP 370** -- site-packages-Verzeichnis pro Benutzer

PYTHONEXECUTABLE

   Ist diese Umgebungsvariable gesetzt, wird "sys.argv[0]" auf ihren
   Wert gesetzt statt auf den Wert aus der C-Laufzeitumgebung.
   Funktioniert nur unter macOS.

PYTHONWARNINGS

   Das entspricht der Option "-W". Ist sie auf eine durch Kommas
   getrennte Zeichenkette gesetzt, entspricht das der mehrfachen
   Angabe von "-W", wobei Filter, die weiter hinten in der Liste
   stehen, Vorrang vor früheren haben.

   Die einfachsten Einstellungen wenden eine bestimmte Aktion
   bedingungslos auf alle Warnungen an, die ein Prozess ausgibt (auch
   auf die, die sonst standardmäßig ignoriert werden):

      PYTHONWARNINGS=default  # Einmal pro Aufrufstelle warnen
      PYTHONWARNINGS=error    # In Ausnahmen umwandeln
      PYTHONWARNINGS=always   # Jedes Mal warnen
      PYTHONWARNINGS=all      # Dasselbe wie PYTHONWARNINGS=always
      PYTHONWARNINGS=module   # Einmal pro aufrufendem Modul warnen
      PYTHONWARNINGS=once     # Einmal pro Python-Prozess warnen
      PYTHONWARNINGS=ignore   # Niemals warnen

   Weitere Einzelheiten unter The Warnings Filter und Describing
   Warning Filters.

   Geändert in Version 3.15: Unterstützung regulärer Ausdrücke für
   *message* und *module* hinzugefügt.

PYTHONFAULTHANDLER

   Ist diese Umgebungsvariable auf eine nicht leere Zeichenkette
   gesetzt, wird beim Start "faulthandler.enable()" aufgerufen: Es
   wird ein Handler für die Signale "SIGSEGV", "SIGFPE", "SIGABRT",
   "SIGBUS" und "SIGILL" eingerichtet, der den Python-Traceback
   ausgibt. Das entspricht der Option "-X" "faulthandler".

   Added in version 3.3.

PYTHONTRACEMALLOC

   Ist diese Umgebungsvariable auf eine nicht leere Zeichenkette
   gesetzt, werden Python-Speicheranforderungen über das Modul
   "tracemalloc" mitgeschrieben. Der Wert der Variable ist die größte
   Anzahl an Frames, die im Traceback einer Aufzeichnung gespeichert
   werden. "PYTHONTRACEMALLOC=1" speichert zum Beispiel nur den
   jüngsten Frame. Mehr dazu bei der Funktion "tracemalloc.start()".
   Das entspricht dem Setzen der Option "-X" "tracemalloc".

   Added in version 3.4.

PYTHONPROFILEIMPORTTIME

   Ist diese Umgebungsvariable auf "1" gesetzt, zeigt Python, wie
   lange jeder Import dauert. Auf "2" gesetzt, gibt Python auch
   importierte Module aus, die bereits geladen waren. Das entspricht
   dem Setzen der Option "-X" "importtime".

   Added in version 3.7.

   Geändert in Version 3.14: "PYTHONPROFILEIMPORTTIME=2" hinzugefügt,
   um auch Importe bereits geladener Module mitzuschreiben.

PYTHONASYNCIODEBUG

   Ist diese Umgebungsvariable auf eine nicht leere Zeichenkette
   gesetzt, wird der Debug-Modus des Moduls "asyncio" eingeschaltet.

   Added in version 3.4.

PYTHONMALLOC

   Legt die Python-Speicherverwalter fest und/oder richtet Debug-Hooks
   ein.

   Legt die Familie der von Python verwendeten Speicherverwalter fest:

   * "default": verwendet die Standard-Speicherverwalter.

   * "malloc": verwendet die Funktion "malloc()" der C-Bibliothek für
     alle Bereiche ("PYMEM_DOMAIN_RAW", "PYMEM_DOMAIN_MEM",
     "PYMEM_DOMAIN_OBJ").

   * "pymalloc": verwendet den pymalloc-Verwalter für die Bereiche
     "PYMEM_DOMAIN_MEM" und "PYMEM_DOMAIN_OBJ" und die Funktion
     "malloc()" für den Bereich "PYMEM_DOMAIN_RAW".

   * "mimalloc": verwendet den mimalloc-Verwalter für die Bereiche
     "PYMEM_DOMAIN_MEM" und "PYMEM_DOMAIN_OBJ" und die Funktion
     "malloc()" für den Bereich "PYMEM_DOMAIN_RAW".

   Debug-Hooks einrichten:

   * "debug": richtet Debug-Hooks über den Standard-Speicherverwaltern
     ein.

   * "malloc_debug": wie "malloc", richtet aber zusätzlich Debug-Hooks
     ein.

   * "pymalloc_debug": wie "pymalloc", richtet aber zusätzlich Debug-
     Hooks ein.

   * "mimalloc_debug": wie "mimalloc", richtet aber zusätzlich Debug-
     Hooks ein.

   Bemerkung:

     Im *free-threaded* Build werden die Werte "malloc",
     "malloc_debug", "pymalloc" und "pymalloc_debug" nicht
     unterstützt. Akzeptiert werden nur "default", "debug", "mimalloc"
     und "mimalloc_debug".

   Added in version 3.6.

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

PYTHONMALLOCSTATS

   Ist sie auf eine nicht leere Zeichenkette gesetzt, gibt Python
   jedes Mal, wenn eine neue Objekt-Arena erzeugt wird, und beim
   Beenden Statistiken des pymalloc-Speicherverwalters beziehungsweise
   des mimalloc-Speicherverwalters aus (je nachdem, welcher in
   Verwendung ist).

   Diese Variable wird ignoriert, wenn über die Umgebungsvariable
   "PYTHONMALLOC" der Verwalter "malloc()" der C-Bibliothek erzwungen
   wird oder wenn Python ohne Unterstützung für "pymalloc" und
   "mimalloc" konfiguriert ist.

   Geändert in Version 3.6: Diese Variable lässt sich jetzt auch bei
   einem im Release-Modus kompilierten Python verwenden. Auf eine
   leere Zeichenkette gesetzt, hat sie jetzt keine Wirkung.

PYTHON_PYMALLOC_HUGEPAGES

   Ist sie auf eine Ganzzahl ungleich null gesetzt, wird die
   Unterstützung für Huge Pages bei pymalloc-Arenen eingeschaltet. Auf
   "0" gesetzt oder nicht gesetzt, schaltet sie diese ab. Python muss
   mit "--with-pymalloc-hugepages" kompiliert sein, damit diese
   Variable überhaupt wirkt.

   Ist sie eingeschaltet, verwendet die Arena-Anforderung
   "MAP_HUGETLB" (Linux) beziehungsweise "MEM_LARGE_PAGES" (Windows)
   und greift automatisch auf gewöhnliche Seiten zurück, wenn keine
   Huge Pages verfügbar sind.

   Warnung:

     Ist unter Linux der Vorrat an Huge Pages erschöpft, lösen
     Seitenfehler – einschließlich der durch "os.fork()" ausgelösten
     Copy-on-Write-Fehler – ein "SIGBUS" aus und beenden den Prozess.
     Schalte das nur in Umgebungen ein, in denen der Vorrat an Huge
     Pages passend bemessen ist und Fork-Sicherheit keine Rolle
     spielt.Unter Windows brauchst du dafür ein besonderes Recht.
     Einzelheiten stehen in der Windows-Dokumentation zu Large Pages.
     Python schlägt beim Start fehl, wenn der Benutzer das
     erforderliche Recht SeLockMemoryPrivilege nicht besitzt.

   Added in version 3.15.

PYTHONLEGACYWINDOWSFSENCODING

   Ist sie auf eine nicht leere Zeichenkette gesetzt, kehrt der
   Standardmodus für *Dateisystemkodierung und Fehlerbehandlung* zu
   den Werten vor 3.6 zurück, also 'mbcs' und 'replace'. Andernfalls
   werden die neuen Standardwerte 'utf-8' und 'surrogatepass'
   verwendet.

   Das lässt sich zur Laufzeit auch mit
   "sys._enablelegacywindowsfsencoding()" einschalten.

   Verfügbarkeit: Windows.

   Added in version 3.6: Mehr dazu unter **PEP 529**.

PYTHONLEGACYWINDOWSSTDIO

   Ist sie auf eine nicht leere Zeichenkette gesetzt, werden der neue
   Konsolenleser und der neue Konsolenschreiber nicht verwendet.
   Unicode-Zeichen werden dann gemäß der aktiven Codepage der Konsole
   kodiert und nicht mit utf-8.

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

   Verfügbarkeit: Windows.

   Added in version 3.6.

PYTHONCOERCECLOCALE

   Ist sie auf den Wert "0" gesetzt, überspringt die Hauptanwendung
   der Python-Befehlszeile das Umlenken der alten ASCII-basierten
   Gebietsschemata C und POSIX auf eine leistungsfähigere
   UTF-8-basierte Alternative.

   Ist diese Variable *nicht* gesetzt (oder auf einen anderen Wert als
   "0"), ist außerdem die Umgebungsvariable "LC_ALL" zum Überschreiben
   des Gebietsschemas nicht gesetzt, und ist das für die Kategorie
   "LC_CTYPE" gemeldete aktuelle Gebietsschema entweder das Standard-
   Gebietsschema "C" oder das ausdrücklich ASCII-basierte "POSIX",
   dann versucht die Python-Befehlszeile, für die Kategorie "LC_CTYPE"
   die folgenden Gebietsschemata in der angegebenen Reihenfolge
   einzustellen, bevor sie die Laufzeitumgebung des Interpreters lädt:

   * "C.UTF-8"

   * "C.utf8"

   * "UTF-8"

   Gelingt es, eine dieser Gebietsschema-Kategorien einzustellen, wird
   die Umgebungsvariable "LC_CTYPE" in der aktuellen Prozessumgebung
   ebenfalls entsprechend gesetzt, bevor die Python-Laufzeitumgebung
   initialisiert wird. So wird die geänderte Einstellung nicht nur vom
   Interpreter selbst und von anderen gebietsschemabewussten
   Komponenten im selben Prozess gesehen (etwa der GNU-Bibliothek
   "readline"), sondern auch in Unterprozessen (unabhängig davon, ob
   darin ein Python-Interpreter läuft) sowie bei Operationen, die die
   Umgebung anstelle des aktuellen C-Gebietsschemas abfragen (etwa
   Pythons eigenes "locale.getdefaultlocale()").

   Das Einstellen eines dieser Gebietsschemata (ausdrücklich oder über
   das oben beschriebene stillschweigende Umlenken) schaltet
   automatisch die Fehlerbehandlung "surrogateescape" für "sys.stdin"
   und "sys.stdout" ein ("sys.stderr" verwendet weiterhin
   "backslashreplace" wie in jedem anderen Gebietsschema). Dieses
   Verhalten der Ströme lässt sich wie üblich über "PYTHONIOENCODING"
   überschreiben.

   Zur Fehlersuche sorgt "PYTHONCOERCECLOCALE=warn" dafür, dass Python
   Warnmeldungen auf "stderr" ausgibt, wenn das Umlenken des
   Gebietsschemas greift oder wenn beim Initialisieren der Python-
   Laufzeitumgebung noch ein Gebietsschema aktiv ist, das das Umlenken
   ausgelöst *hätte*.

   Beachte außerdem, dass "PYTHONUTF8" auch dann standardmäßig in
   alten ASCII-basierten Gebietsschemata greift, wenn das Umlenken des
   Gebietsschemas abgeschaltet ist oder kein geeignetes Ziel-
   Gebietsschema findet. Beide Funktionen müssen abgeschaltet werden,
   damit der Interpreter für Systemschnittstellen "ASCII" anstelle von
   "UTF-8" verwendet.

   Verfügbarkeit: Unix.

   Added in version 3.7: Mehr dazu unter **PEP 538**.

PYTHONDEVMODE

   Ist diese Umgebungsvariable auf eine nicht leere Zeichenkette
   gesetzt, wird der Python-Entwicklungsmodus eingeschaltet, der
   zusätzliche Prüfungen zur Laufzeit einführt, die zu aufwendig sind,
   um standardmäßig eingeschaltet zu sein. Das entspricht dem Setzen
   der Option "-X" "dev".

   Added in version 3.7.

PYTHONUTF8

   Auf "1" gesetzt, schaltet sie den Python-UTF-8-Modus ein.

   Auf "0" gesetzt, schaltet sie den Python-UTF-8-Modus ab.

   Jede andere nicht leere Zeichenkette führt beim Initialisieren des
   Interpreters zu einem Fehler.

   Added in version 3.7.

PYTHONWARNDEFAULTENCODING

   Ist diese Umgebungsvariable auf eine nicht leere Zeichenkette
   gesetzt, wird eine "EncodingWarning" ausgelöst, wenn die vom
   Gebietsschema abhängige Standardkodierung verwendet wird.

   Einzelheiten unter Opt-in EncodingWarning.

   Added in version 3.10.

PYTHONNODEBUGRANGES

   Ist diese Variable gesetzt, schaltet sie das Mitführen der Tabellen
   ab, die jedem Befehl in Codeobjekten zusätzliche Ortsangaben
   zuordnen (Endzeile, Startspalte und Endspalte). Das ist nützlich,
   wenn kleinere Codeobjekte und pyc-Dateien gewünscht sind und wenn
   die zusätzlichen sichtbaren Ortsmarkierungen unterdrückt werden
   sollen, mit denen der Interpreter Tracebacks anzeigt.

   Added in version 3.11.

PYTHONPERFSUPPORT

   Ist diese Variable auf einen Wert ungleich null gesetzt, schaltet
   sie die Unterstützung für den Linux-Profiler "perf" ein, damit
   dieser Python-Aufrufe erkennen kann.

   Auf "0" gesetzt, schaltet sie die Unterstützung für den Linux-
   Profiler "perf" ab.

   Siehe auch die Befehlszeilenoption "-X perf" und Unterstützung von
   perf map-kompatiblen Profilern in Python.

   Added in version 3.12.

PYTHON_PERF_JIT_SUPPORT

   Ist diese Variable auf einen Wert ungleich null gesetzt, schaltet
   sie die Unterstützung für den Linux-Profiler "perf" ein, damit
   dieser Python-Aufrufe anhand von DWARF-Informationen erkennen kann.

   Auf "0" gesetzt, schaltet sie die Unterstützung für den Linux-
   Profiler "perf" ab.

   Siehe auch die Befehlszeilenoption "-X perf_jit" und Unterstützung
   von perf map-kompatiblen Profilern in Python.

   Added in version 3.13.

PYTHON_DISABLE_REMOTE_DEBUG

   Ist diese Variable auf eine nicht leere Zeichenkette gesetzt,
   schaltet sie die in **PEP 768** beschriebene Funktion zum Fern-
   Debuggen ab. Das betrifft sowohl die Möglichkeit, Code zur
   Ausführung in einem anderen Prozess einzuplanen, als auch die
   Möglichkeit, Code zur Ausführung im aktuellen Prozess zu empfangen.

   See also the "-X disable-remote-debug" command-line option.

   Added in version 3.14.

PYTHON_CPU_COUNT

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

   Siehe auch die Befehlszeilenoption "-X cpu_count".

   Added in version 3.13.

PYTHON_FROZEN_MODULES

   Ist diese Variable auf "on" oder "off" gesetzt, legt sie fest, ob
   eingefrorene Module vom Importmechanismus ignoriert werden. Der
   Wert "on" bedeutet, dass sie importiert werden, "off", dass sie
   ignoriert werden. Standard ist "on" bei Builds ohne Debug-
   Unterstützung (der Normalfall) und "off" bei Debug-Builds. Beachte,
   dass die eingefrorenen Module "importlib_bootstrap" und
   "importlib_bootstrap_external" immer verwendet werden, auch wenn
   dieser Schalter auf "off" steht.

   Siehe auch die Befehlszeilenoption "-X frozen_modules".

   Added in version 3.13.

PYTHON_COLORS

   Ist diese Variable auf "1" gesetzt, färbt der Interpreter
   verschiedene Arten von Ausgaben ein. Auf "0" gesetzt, schaltet sie
   dieses Verhalten ab. Siehe auch Farbsteuerung.

   Added in version 3.13.

PYTHON_BASIC_REPL

   Ist diese Variable auf einen beliebigen Wert gesetzt, versucht der
   Interpreter nicht, die Python-basierte *REPL* zu laden, die
   "readline" benötigt, und verwendet stattdessen die herkömmliche
   parserbasierte *REPL*.

   Added in version 3.13.

PYTHON_BASIC_COMPLETER

   Ist diese Variable auf einen beliebigen Wert gesetzt, verwendet
   PyREPL für die Tabulator-Vervollständigung "rlcompleter" anstelle
   der Standardvervollständigung, die Farben verwendet.

   Added in version 3.15.

PYTHON_HISTORY

   Mit dieser Umgebungsvariable lässt sich der Ort einer Datei
   ".python_history" festlegen (standardmäßig ist es ".python_history"
   im Benutzerverzeichnis).

   Added in version 3.13.

PYTHON_GIL

   Ist diese Variable auf "1" gesetzt, wird der Global Interpreter
   Lock (GIL) erzwungen eingeschaltet. Auf "0" gesetzt, erzwingt sie,
   dass der GIL abgeschaltet ist (erfordert ein Python, das mit der
   Build-Option "--disable-gil" konfiguriert ist).

   Siehe auch die Befehlszeilenoption "-X gil", die Vorrang vor dieser
   Variable hat, sowie Free-Threaded CPython.

   Added in version 3.13.

PYTHON_THREAD_INHERIT_CONTEXT

   Ist diese Variable auf "1" gesetzt, verwendet "Thread" beim Start
   standardmäßig eine Kopie des Kontexts des Aufrufers von
   "Thread.start()". Andernfalls starten neue Threads mit einem leeren
   Kontext. Ist sie nicht gesetzt, ist der Standardwert dieser
   Variable "1" bei Free-Threaded-Builds und sonst "0". Siehe auch "-X
   thread_inherit_context".

   Added in version 3.14.

PYTHON_CONTEXT_AWARE_WARNINGS

   Auf "1" gesetzt, verwendet der Kontextmanager
   "warnings.catch_warnings" eine "ContextVar", um den Zustand des
   Warnfilters zu speichern. Ist sie nicht gesetzt, ist der
   Standardwert dieser Variable "1" bei Free-Threaded-Builds und sonst
   "0". Siehe "-X context_aware_warnings".

   Added in version 3.14.

PYTHON_PATHCONFIG_WARNINGS

   Ist sie wahr ("1"), darf The initialization of the sys.path module
   search path Warnungen auf stderr schreiben. Ist sie falsch ("0"),
   werden diese Warnungen unterdrückt. Standardmäßig ist sie wahr.
   Siehe auch "-X pathconfig_warnings".

   Added in version 3.15.

PYTHON_JIT

   Bei Builds, in denen die experimentelle Just-in-Time-Kompilierung
   verfügbar ist, kann diese Variable den JIT beim Start des
   Interpreters erzwungen abschalten ("0") oder einschalten ("1").

   Added in version 3.13.

PYTHON_TLBC

   Auf "1" gesetzt, schaltet sie threadlokalen Bytecode ein. Auf "0"
   gesetzt, sind threadlokaler Bytecode und der spezialisierende
   Interpreter abgeschaltet. Gilt nur für Builds, die mit "--disable-
   gil" konfiguriert sind.

   Siehe auch die Befehlszeilenoption "-X tlbc".

   Added in version 3.14.

PYTHON_LAZY_IMPORTS

   Steuert das Verhalten beim verzögerten Import. Akzeptiert zwei
   Werte: "all" macht standardmäßig alle Importe verzögert, "normal"
   (der Standard) beachtet das Schlüsselwort "lazy" im Quelltext.

   Siehe auch die Befehlszeilenoption "-X lazy_imports".

   Added in version 3.15.


1.2.1. Variablen für den Debug-Modus
------------------------------------

PYTHONDUMPREFS

   Ist sie gesetzt, gibt Python Objekte und Referenzzähler aus, die
   nach dem Herunterfahren des Interpreters noch leben.

   Erfordert ein Python, das mit der Build-Option "--with-trace-refs"
   konfiguriert ist.

PYTHONDUMPREFSFILE

   Ist sie gesetzt, gibt Python Objekte und Referenzzähler, die nach
   dem Herunterfahren des Interpreters noch leben, in eine Datei unter
   dem Pfad aus, der als Wert dieser Umgebungsvariable angegeben ist.

   Erfordert ein Python, das mit der Build-Option "--with-trace-refs"
   konfiguriert ist.

   Added in version 3.11.

PYTHON_PRESITE

   Ist diese Variable auf ein Modul gesetzt, wird dieses Modul früh im
   Lebenszyklus des Interpreters importiert, bevor das Modul "site"
   ausgeführt wird und bevor das Modul "__main__" erzeugt wird. Das
   importierte Modul wird deshalb nicht als "__main__" behandelt.

   Damit lässt sich früh während der Python-Initialisierung Code
   ausführen.

   Um ein Untermodul zu importieren, verwende "package.module" als
   Wert, wie in einer import-Anweisung.

   Siehe auch die Befehlszeilenoption "-X presite", die Vorrang vor
   dieser Variable hat.

   Erfordert ein Python, das mit der Build-Option "--with-pydebug"
   konfiguriert ist.

   Geändert in Version 3.15: Das Einstiegspunktformat "module:func"
   wird ebenfalls akzeptiert.

   Added in version 3.13.
