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

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

**CPython-Implementierungsdetail:** 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 [-bBdEhiIOqsSuvVWx?] [-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:

* When called with standard input connected to a tty device, it
  prompts for commands and executes them until an EOF (an end-of-file
  character, you can produce that with "Ctrl-D" on UNIX or "Ctrl-Z,
  Enter" on Windows) is read.

* 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. Führende
  Leerzeichen sind in Python-Anweisungen bedeutsam!

* When called with "-m module-name", the given module is located on
  the Python module path and executed as a script.

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.

-m <module-name>

   Search "sys.path" for the named module and execute its contents as
   the "__main__" module.

   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.

   Neu in Version 3.11.

--help-xoptions

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

   Neu in Version 3.11.

--help-all

   Gibt die vollständigen Verwendungshinweise aus und beendet sich.

   Neu 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]

   Neu 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".

-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

   Turn on parser debugging output (for expert only, depending on
   compilation options).  See also "PYTHONDEBUG".

-E

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

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

-i

   When a script is passed as first argument or the "-c" option is
   used, enter interactive mode after executing the script or the
   command, even when "sys.stdin" does not appear to be a terminal.
   The "PYTHONSTARTUP" file is not read.

   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.

   Neu 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).

   Neu in Version 3.11.

-q

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

   Neu in Version 3.2.

-R

   Turn on hash randomization. This option only has an effect if the
   "PYTHONHASHSEED" environment variable is set to "0", since hash
   randomization is enabled by default.

   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.

   Hash randomization is intended to provide protection against a
   denial-of-service caused by carefully chosen inputs that exploit
   the worst case performance of a dict construction, *O*(*n*^2)
   complexity.  See http://ocert.org/advisories/ocert-2011-003.html
   for details.

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

   Neu 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  # Warn once per call location
      -Werror    # Convert to exceptions
      -Walways   # Warn every time
      -Wmodule   # Warn once per calling module
      -Wonce     # Warn once per Python process
      -Wignore   # Never warn

   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 die gesamte Warnmeldung passen, wobei
   Groß- und Kleinschreibung keine Rolle spielt.

   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.

   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.

-x

   Skip the first line of the source, allowing use of non-Unix forms
   of "#!cmd".  This is intended for a DOS specific hack only.

-X

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

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

   * "-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.

   * "-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".

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

   * "-X importtime" to show how long each import takes. It shows
     module name, cumulative time (including nested imports) and self
     time (excluding nested imports).  Note that its output may be
     broken in multi-threaded application.  Typical usage is "python3
     -X importtime -c 'import asyncio'".  See also
     "PYTHONPROFILEIMPORTTIME".

   * "-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".

   * "-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".

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

   * "-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".

   * "-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".

   * "-X frozen_modules" determines whether or not frozen modules are
     ignored by the import machinery.  A value of "on" means they get
     imported and "off" means they are ignored.  The default is "on"
     if this is an installed Python (the normal case).  If it's under
     development (running from the source tree) then the default is
     "off". Note that the "importlib_bootstrap" and
     "importlib_bootstrap_external" frozen modules are always used,
     even if this flag is set to "off".

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

   Neu in Version 3.2.

   Geändert in Version 3.3: Added the "-X faulthandler" option.

   Geändert in Version 3.4: Added the "-X showrefcount" and "-X
   tracemalloc" options.

   Geändert in Version 3.6: Added the "-X showalloccount" option.

   Geändert in Version 3.7: Added the "-X importtime", "-X dev" and
   "-X utf8" options.

   Geändert in Version 3.8: Added the "-X pycache_prefix" option. The
   "-X dev" option now logs "close()" exceptions in "io.IOBase"
   destructor.

   Geändert in Version 3.9: Using "-X dev" option, check *encoding*
   and *errors* arguments on string encoding and decoding
   operations.The "-X showalloccount" option has been removed.

   Geändert in Version 3.10: Added the "-X warn_default_encoding"
   option. Removed the "-X oldparser" option.

   Geändert in Version 3.11: Added the "-X no_debug_ranges", "-X
   frozen_modules" and "-X int_max_str_digits" options.


1.1.4. Options you shouldn't use
--------------------------------

-J

   Reserved for use by Jython.


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

   Neu in Version 3.11.

PYTHONPLATLIBDIR

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

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

   Neu 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".

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.11.10: (also 3.10.15, 3.9.20, and 3.8.20)
   Emits audit events.

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

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

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

   Neu 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

   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.

   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  # Warn once per call location
      PYTHONWARNINGS=error    # Convert to exceptions
      PYTHONWARNINGS=always   # Warn every time
      PYTHONWARNINGS=module   # Warn once per calling module
      PYTHONWARNINGS=once     # Warn once per Python process
      PYTHONWARNINGS=ignore   # Never warn

   Weitere Einzelheiten unter The Warnings Filter und Describing
   Warning Filters.

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

   Neu 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".

   Neu in Version 3.4.

PYTHONPROFILEIMPORTTIME

   If this environment variable is set to a non-empty string, Python
   will show how long each import takes. This is equivalent to setting
   the "-X" "importtime" option.

   Neu in Version 3.7.

PYTHONASYNCIODEBUG

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

   Neu 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".

   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.

   Neu in Version 3.6.

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

PYTHONMALLOCSTATS

   If set to a non-empty string, Python will print statistics of the
   pymalloc memory allocator every time a new pymalloc object arena is
   created, and on shutdown.

   This variable is ignored if the "PYTHONMALLOC" environment variable
   is used to force the "malloc()" allocator of the C library, or if
   Python is configured without "pymalloc" support.

   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.

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.

   This may also be enabled at runtime with
   "sys._enablelegacywindowsfsencoding()".

   Availability: Windows.

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

   Availability: Windows.

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

   Availability: Unix.

   Neu 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".

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

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

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

   Neu in Version 3.11.


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

PYTHONTHREADDEBUG

   If set, Python will print threading debug info into stdout.

   Need a debug build of Python.

   Deprecated since version 3.10, will be removed in version 3.12.

PYTHONDUMPREFS

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

   Need Python configured with the "--with-trace-refs" build option.

PYTHONDUMPREFSFILE=FILENAME

   If set, Python will dump objects and reference counts still alive
   after shutting down the interpreter into a file called *FILENAME*.

   Need Python configured with the "--with-trace-refs" build option.

   Neu in Version 3.11.
