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 commandaufgerufen, 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.argvgleich"-c", und das aktuelle Verzeichnis wird an den Anfang vonsys.pathgestellt (sodass Module aus diesem Verzeichnis als Module der obersten Ebene importiert werden können).Löst ein Auditing-Ereignis
cpython.run_commandmit dem Argumentcommandaus.
- -m <module-name>¶
Search
sys.pathfor 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.argvder vollständige Pfad zur Moduldatei (während die Moduldatei gesucht wird, ist das erste Element auf"-m"gesetzt). Wie bei der Option-cwird das aktuelle Verzeichnis an den Anfang vonsys.pathgestellt.Mit der Option
-Ilässt sich das Skript im abgeschotteten Modus ausführen, in demsys.pathweder das aktuelle Verzeichnis noch das site-packages-Verzeichnis des Benutzers enthält. Alle UmgebungsvariablenPYTHON*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_modulemit dem Argumentmodule-nameaus.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-iimplizit.Ist diese Option angegeben, ist das erste Element von
sys.argvgleich"-", und das aktuelle Verzeichnis wird an den Anfang vonsys.pathgestellt.Löst ein Auditing-Ereignis
cpython.run_stdinohne 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__.pyoder auf eine ZIP-Datei mit einer Datei__main__.pyverweist.Ist diese Option angegeben, ist das erste Element von
sys.argvder 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.pathgestellt 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.pathgestellt und die Datei__main__.pyan diesem Ort als Modul__main__ausgeführt.Mit der Option
-Ilässt sich das Skript im abgeschotteten Modus ausführen, in demsys.pathweder das Verzeichnis des Skripts noch das site-packages-Verzeichnis des Benutzers enthält. Alle UmgebungsvariablenPYTHON*werden dabei ebenfalls ignoriert.Löst ein Auditing-Ereignis
cpython.run_filemit dem Argumentfilenameaus.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
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.
1.1.3. Verschiedene Optionen¶
- -b¶
Gibt eine Warnung aus, wenn
bytesoderbytearrayohne Angabe einer Kodierung instrumgewandelt wird oder wennbytesbeziehungsweisebytearraymitstroderbytesmitintverglichen wird. Gibt einen Fehler aus, wenn die Option zweimal angegeben wird (-bb).
- -B¶
Ist sie angegeben, versucht Python nicht, beim Import von Quellmodulen
.pyc-Dateien zu schreiben. Siehe auchPYTHONDONTWRITEBYTECODE.
- --check-hash-based-pycs default|always|never¶
Steuert das Prüfverhalten für hashbasierte
.pyc-Dateien. Siehe Ungültigmachung von zwischengespeichertem Bytecode. Beidefaultwerden geprüfte und ungeprüfte hashbasierte Bytecode-Cache-Dateien nach ihrer jeweiligen Standardbedeutung validiert. Beialwayswerden alle hashbasierten.pyc-Dateien gegen ihre zugehörige Quelldatei validiert, gleich ob geprüft oder ungeprüft. Beineverwerden 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*, etwaPYTHONPATHundPYTHONHOME.
- -i¶
When a script is passed as first argument or the
-coption is used, enter interactive mode after executing the script or the command, even whensys.stdindoes not appear to be a terminal. ThePYTHONSTARTUPfile 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,-Pund-snach sich.Im abgeschotteten Modus enthält
sys.pathweder das Verzeichnis des Skripts noch das site-packages-Verzeichnis des Benutzers. Alle UmgebungsvariablenPYTHON*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-1vor der Endung.pyc(siehe PEP 488). Siehe auchPYTHONOPTIMIZE.Geändert in Version 3.5: Die
.pyc-Dateinamen werden gemäß PEP 488 geändert.
- -OO¶
Wirkt wie
-Ound verwirft zusätzlich Docstrings. Ergänzt den Dateinamen kompilierter Dateien (Bytecode) um.opt-2vor 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 codeundpython(REPL): Es wird keine leere Zeichenkette vorangestellt, die für das aktuelle Arbeitsverzeichnis steht.
Siehe auch die Umgebungsvariable
PYTHONSAFEPATHsowie die Optionen-Eund-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
PYTHONHASHSEEDenvironment variable is set to0, 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(n2) complexity. See http://ocert.org/advisories/ocert-2011-003.html for details.
Mit
PYTHONHASHSEEDkannst 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 Benutzersnicht zusys.pathhinzu.Siehe auch
PYTHONNOUSERSITE.Siehe auch
PEP 370 – site-packages-Verzeichnis pro Benutzer
- -S¶
Schaltet den Import des Moduls
siteund die damit verbundenen site-abhängigen Änderungen ansys.pathab. Diese Änderungen bleiben auch dann abgeschaltet, wennsitespäter ausdrücklich importiert wird (rufesite.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
sitemeldet 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.stderraus.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
-Widasselbe 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::DeprecationWarningalle 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
-Wangegeben werden. Passt eine Warnung auf mehr als eine Option, wird die Aktion der letzten passenden Option ausgeführt. Ungültige Optionen-Wwerden ignoriert (allerdings wird beim Ausgeben der ersten Warnung eine Meldung über ungültige Optionen ausgegeben).Warnungen lassen sich auch über die Umgebungsvariable
PYTHONWARNINGSund innerhalb eines Python-Programms über das Modulwarningssteuern. Mit der Funktionwarnings.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 faulthandlerschaltetfaulthandlerein. Siehe auchPYTHONFAULTHANDLER.-X showrefcountgibt 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 tracemallocbeginnt damit, Python-Speicheranforderungen über das Modultracemallocmitzuschreiben. Standardmäßig wird im Traceback einer Aufzeichnung nur der jüngste Frame gespeichert. Mit-X tracemalloc=NFRAMEbeginnt das Mitschreiben mit einer Traceback-Grenze von NFRAME Frames. Mehr dazu untertracemalloc.start()undPYTHONTRACEMALLOC.-X int_max_str_digitsstellt die Längenbegrenzung bei der Umwandlung zwischen Ganzzahl und Zeichenkette ein. Siehe auchPYTHONINTMAXSTRDIGITS.-X importtimeto 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 ispython3 -X importtime -c 'import asyncio'. See alsoPYTHONPROFILEIMPORTTIME.-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 auchPYTHONDEVMODE.-X utf8schaltet den Python-UTF-8-Modus ein.-X utf8=0schaltet den Python-UTF-8-Modus ausdrücklich ab (auch wenn er sich sonst automatisch einschalten würde). Siehe auchPYTHONUTF8.-X pycache_prefix=PATHschreibt.pyc-Dateien in einen parallelen Baum unterhalb des angegebenen Verzeichnisses anstatt in den Codebaum. Siehe auchPYTHONPYCACHEPREFIX.-X warn_default_encodinglöst eineEncodingWarningaus, wenn beim Öffnen von Dateien die vom Gebietsschema abhängige Standardkodierung verwendet wird. Siehe auchPYTHONWARNDEFAULTENCODING.-X no_debug_rangesschaltet 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 auchPYTHONNODEBUGRANGES.-X frozen_modulesdetermines 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._xoptionsabrufen.Neu in Version 3.2.
Geändert in Version 3.3: Added the
-X faulthandleroption.Geändert in Version 3.4: Added the
-X showrefcountand-X tracemallocoptions.Geändert in Version 3.6: Added the
-X showalloccountoption.Geändert in Version 3.7: Added the
-X importtime,-X devand-X utf8options.Geändert in Version 3.8: Added the
-X pycache_prefixoption. The-X devoption now logsclose()exceptions inio.IOBasedestructor.Geändert in Version 3.9: Using
-X devoption, check encoding and errors arguments on string encoding and decoding operations.The
-X showalloccountoption has been removed.Geändert in Version 3.10: Added the
-X warn_default_encodingoption. Removed the-X oldparseroption.Geändert in Version 3.11: Added the
-X no_debug_ranges,-X frozen_modulesand-X int_max_str_digitsoptions.
1.1.4. Options you shouldn’t use¶
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/pythonversionundexec_prefix/lib/pythonversiongesucht, wobeiprefixundexec_prefixinstallationsabhängige Verzeichnisse sind, die beide standardmäßig/usr/locallauten.Ist
PYTHONHOMEauf ein einzelnes Verzeichnis gesetzt, ersetzt dieser Wert sowohlprefixals auchexec_prefix. Um dafür unterschiedliche Werte anzugeben, setzePYTHONHOMEaufprefix:exec_prefix.
- PYTHONPATH¶
Erweitert den Standardsuchpfad für Moduldateien. Das Format entspricht dem von
PATHin der Shell: ein oder mehrere Verzeichnispfade, getrennt durchos.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
PYTHONPATHauch 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/pythonversion(siehePYTHONHOMEoben). Er wird immer anPYTHONPATHangehängt.Ein zusätzliches Verzeichnis wird, wie oben unter Optionen der Schnittstelle beschrieben, im Suchpfad vor
PYTHONPATHeingefügt. Der Suchpfad lässt sich innerhalb eines Python-Programms über die Variablesys.pathverändern.
- PYTHONSAFEPATH¶
Ist sie auf eine nicht leere Zeichenkette gesetzt, wird kein möglicherweise unsicherer Pfad an den Anfang von
sys.pathgestellt. 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.ps1undsys.ps2sowie den Hooksys.__interactivehook__ändern.Löst beim Aufruf während des Starts ein Auditing-Ereignis
cpython.run_startupmit 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 Funktionbreakpoint()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 vonsys.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.environverändern, um beim Programmende den Inspect-Modus zu erzwingen.Löst ein Auditing-Ereignis
cpython.run_stdinohne 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-Xpycache_prefix=PATH.Neu in Version 3.8.
- PYTHONHASHSEED¶
Ist diese Variable nicht gesetzt oder auf
randomgesetzt, wird ein Zufallswert als Startwert für die Hashes von str- und bytes-Objekten verwendet.Ist
PYTHONHASHSEEDauf 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 Teilencodingnameals auch der Teil:errorhandlerist optional und hat dieselbe Bedeutung wie instr.encode().Bei stderr wird der Teil
:errorhandlerignoriert, der Handler ist immer'backslashreplace'.Geändert in Version 3.4: Der Teil
encodingnameist 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
PYTHONLEGACYWINDOWSSTDIOangegeben 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 Benutzersnicht zusys.pathhinzu.Siehe auch
PEP 370 – site-packages-Verzeichnis pro Benutzer
- PYTHONUSERBASE¶
Legt das
Basisverzeichnis des Benutzersfest, aus dem der Pfad dessite-packages-Verzeichnisses des Benutzersund die Installationspfade fürpython -m pip install --userberechnet 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 SignaleSIGSEGV,SIGFPE,SIGABRT,SIGBUSundSIGILLeingerichtet, der den Python-Traceback ausgibt. Das entspricht der Option-Xfaulthandler.Neu in Version 3.3.
- PYTHONTRACEMALLOC¶
Ist diese Umgebungsvariable auf eine nicht leere Zeichenkette gesetzt, werden Python-Speicheranforderungen über das Modul
tracemallocmitgeschrieben. Der Wert der Variable ist die größte Anzahl an Frames, die im Traceback einer Aufzeichnung gespeichert werden.PYTHONTRACEMALLOC=1speichert zum Beispiel nur den jüngsten Frame. Mehr dazu bei der Funktiontracemalloc.start(). Das entspricht dem Setzen der Option-Xtracemalloc.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
-Ximporttimeoption.Neu in Version 3.7.
- PYTHONASYNCIODEBUG¶
Ist diese Umgebungsvariable auf eine nicht leere Zeichenkette gesetzt, wird der Debug-Modus des Moduls
asyncioeingeschaltet.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 Funktionmalloc()der C-Bibliothek für alle Bereiche (PYMEM_DOMAIN_RAW,PYMEM_DOMAIN_MEM,PYMEM_DOMAIN_OBJ).pymalloc: verwendet den pymalloc-Verwalter für die BereichePYMEM_DOMAIN_MEMundPYMEM_DOMAIN_OBJund die Funktionmalloc()für den BereichPYMEM_DOMAIN_RAW.
Debug-Hooks einrichten:
debug: richtet Debug-Hooks über den Standard-Speicherverwaltern ein.malloc_debug: wiemalloc, richtet aber zusätzlich Debug-Hooks ein.pymalloc_debug: wiepymalloc, 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
PYTHONMALLOCenvironment variable is used to force themalloc()allocator of the C library, or if Python is configured withoutpymallocsupport.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
0gesetzt, ü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 UmgebungsvariableLC_ALLzum Überschreiben des Gebietsschemas nicht gesetzt, und ist das für die KategorieLC_CTYPEgemeldete aktuelle Gebietsschema entweder das Standard-GebietsschemaCoder das ausdrücklich ASCII-basiertePOSIX, dann versucht die Python-Befehlszeile, für die KategorieLC_CTYPEdie folgenden Gebietsschemata in der angegebenen Reihenfolge einzustellen, bevor sie die Laufzeitumgebung des Interpreters lädt:C.UTF-8C.utf8UTF-8
Gelingt es, eine dieser Gebietsschema-Kategorien einzustellen, wird die Umgebungsvariable
LC_CTYPEin 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-Bibliothekreadline), 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 eigeneslocale.getdefaultlocale()).Das Einstellen eines dieser Gebietsschemata (ausdrücklich oder über das oben beschriebene stillschweigende Umlenken) schaltet automatisch die Fehlerbehandlung
surrogateescapefürsys.stdinundsys.stdoutein (sys.stderrverwendet weiterhinbackslashreplacewie in jedem anderen Gebietsschema). Dieses Verhalten der Ströme lässt sich wie üblich überPYTHONIOENCODINGüberschreiben.Zur Fehlersuche sorgt
PYTHONCOERCECLOCALE=warndafür, dass Python Warnmeldungen aufstderrausgibt, 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
PYTHONUTF8auch 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 SystemschnittstellenASCIIanstelle vonUTF-8verwendet.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
-Xdev.Neu in Version 3.7.
- PYTHONUTF8¶
Auf
1gesetzt, schaltet sie den Python-UTF-8-Modus ein.Auf
0gesetzt, 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
EncodingWarningausgelö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-refsbuild 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-refsbuild option.Neu in Version 3.11.