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 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!Wird er mit
-m module-nameaufgerufen, 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.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>¶
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.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.
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.
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¶
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*, etwaPYTHONPATHundPYTHONHOME.
- -i¶
Wechselt nach der Ausführung in den interaktiven Modus.
Mit der Option
-iwird in jedem der folgenden Fälle in den interaktiven Modus gewechselt:Wenn ein Skript als erstes Argument übergeben wird
Wenn die Option
-cverwendet wirdWenn die Option
-mverwendet wird
Der interaktive Modus startet auch dann, wenn
sys.stdinkein Terminal zu sein scheint. Die DateiPYTHONSTARTUPwird 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,-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.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-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).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
PYTHONHASHSEEDauf etwas anderes alsrandomgesetzt 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(n2). Einzelheiten unter https://ocert.org/advisories/ocert-2011-003.html.
Mit
PYTHONHASHSEEDkannst 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 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 # 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
-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¶
Überspringt die erste Zeile des Quelltextes, sodass auch Nicht-Unix-Formen von
#!cmdverwendet 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 faulthandlerschaltetfaulthandlerein. Siehe auchPYTHONFAULTHANDLER.Added in version 3.3.
-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.Added in version 3.4.
-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.Added in version 3.4.
-X int_max_str_digitsstellt die Längenbegrenzung bei der Umwandlung zwischen Ganzzahl und Zeichenkette ein. Siehe auchPYTHONINTMAXSTRDIGITS.Added in version 3.11.
-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.Added in version 3.7.
-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.Added in version 3.7.
-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.Added in version 3.7.
-X pycache_prefix=PATHschreibt.pyc-Dateien in einen parallelen Baum unterhalb des angegebenen Verzeichnisses anstatt in den Codebaum. Siehe auchPYTHONPYCACHEPREFIX.Added in version 3.8.
-X warn_default_encodinglöst eineEncodingWarningaus, wenn beim Öffnen von Dateien die vom Gebietsschema abhängige Standardkodierung verwendet wird. Siehe auchPYTHONWARNDEFAULTENCODING.Added in version 3.10.
-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.Added in version 3.11.
-X frozen_moduleslegt fest, ob eingefrorene Module vom Importmechanismus ignoriert werden. Der Wertonbedeutet, dass sie importiert werden,off, dass sie ignoriert werden. Standard istonbei einem installierten Python (der Normalfall). Befindet es sich in Entwicklung (Ausführung aus dem Quellbaum), ist der Standardoff. Beachte, dass die eingefrorenen Moduleimportlib_bootstrapundimportlib_bootstrap_externalimmer verwendet werden, auch wenn dieser Schalter aufoffsteht. Siehe auchPYTHON_FROZEN_MODULES.Added in version 3.11.
-X perfschaltet die Unterstützung für den Linux-Profilerperfein. Ist diese Option angegeben, kann der ProfilerperfPython-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 auchPYTHONPERFSUPPORTund Python support for the Linux perf profiler.Added in version 3.12.
-X perf_jitschaltet die Unterstützung für den Linux-Profilerperfmit DWARF-Unterstützung ein. Ist diese Option angegeben, kann der ProfilerperfPython-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 auchPYTHON_PERF_JIT_SUPPORTund Python support for the Linux perf profiler.Added in version 3.13.
-X cpu_count=nüberschreibtos.cpu_count(),os.process_cpu_count()undmultiprocessing.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 auchPYTHON_CPU_COUNT. Ist n gleichdefault, wird nichts überschrieben.Added in version 3.13.
-X presite=package.modulegibt ein Modul an, das importiert werden soll, bevor das Modulsiteausgefü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 auchPYTHON_PRESITE.Added in version 3.13.
-X gil=0,1erzwingt, dass der GIL abgeschaltet beziehungsweise eingeschaltet wird. Der Wert0ist nur in Builds verfügbar, die mit--disable-gilkonfiguriert sind. Siehe auchPYTHON_GILund Free-threaded CPython.Added in version 3.13.
Außerdem lassen sich damit beliebige Werte übergeben und über das Wörterbuch
sys._xoptionsabrufen.Added in version 3.2.
Geändert in Version 3.9: Die Option
-X showalloccountwurde entfernt.Geändert in Version 3.10: Die Option
-X oldparserwurde entfernt.
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.1.5. 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.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.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.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.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.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
PYTHONSTARTUPausgefü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-Xpycache_prefix=PATH.Added 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.
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 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 # 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.
- 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.Added 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.Added 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.Added in version 3.7.
- PYTHONASYNCIODEBUG¶
Ist diese Umgebungsvariable auf eine nicht leere Zeichenkette gesetzt, wird der Debug-Modus des Moduls
asyncioeingeschaltet.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 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.mimalloc: verwendet den mimalloc-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.mimalloc_debug: wiemimalloc, richtet aber zusätzlich Debug-Hooks ein.
Added 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.
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
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.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
-Xdev.Added 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.
Added 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.
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
perfein, damit dieser Python-Aufrufe erkennen kann.Auf
0gesetzt, schaltet sie die Unterstützung für den Linux-Profilerperfab.Siehe auch die Befehlszeilenoption
-X perfund Python support for the Linux perf profiler.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
perfein, damit dieser Python-Aufrufe anhand von DWARF-Informationen erkennen kann.Auf
0gesetzt, schaltet sie die Unterstützung für den Linux-Profilerperfab.Siehe auch die Befehlszeilenoption
-X perf_jitund Python support for the Linux perf profiler.Added in version 3.13.
- PYTHON_CPU_COUNT¶
Ist diese Variable auf eine positive Ganzzahl gesetzt, überschreibt sie die Rückgabewerte von
os.cpu_count()undos.process_cpu_count().Siehe auch die Befehlszeilenoption
-X cpu_count.Added in version 3.13.
- PYTHON_FROZEN_MODULES¶
Ist diese Variable auf
onoderoffgesetzt, legt sie fest, ob eingefrorene Module vom Importmechanismus ignoriert werden. Der Wertonbedeutet, dass sie importiert werden,off, dass sie ignoriert werden. Standard istonbei Builds ohne Debug-Unterstützung (der Normalfall) undoffbei Debug-Builds. Beachte, dass die eingefrorenen Moduleimportlib_bootstrapundimportlib_bootstrap_externalimmer verwendet werden, auch wenn dieser Schalter aufoffsteht.Siehe auch die Befehlszeilenoption
-X frozen_modules.Added in version 3.13.
- PYTHON_COLORS¶
Ist diese Variable auf
1gesetzt, färbt der Interpreter verschiedene Arten von Ausgaben ein. Auf0gesetzt, schaltet sie dieses Verhalten ab. Siehe auch Farbsteuerung.Added in version 3.13.
- PYTHON_BASIC_REPL¶
If this variable is set to any value, the interpreter will not attempt to load the Python-based REPL that requires
cursesandreadline, and will instead use the traditional parser-based REPL.Added in version 3.13.
- PYTHON_HISTORY¶
Mit dieser Umgebungsvariable lässt sich der Ort einer Datei
.python_historyfestlegen (standardmäßig ist es.python_historyim Benutzerverzeichnis).Added in version 3.13.
- PYTHON_GIL¶
Ist diese Variable auf
1gesetzt, wird der Global Interpreter Lock (GIL) erzwungen eingeschaltet. Auf0gesetzt, erzwingt sie, dass der GIL abgeschaltet ist (erfordert ein Python, das mit der Build-Option--disable-gilkonfiguriert ist).Siehe auch die Befehlszeilenoption
-X gil, die Vorrang vor dieser Variable hat, sowie Free-threaded CPython.Added in version 3.13.
- 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.
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-refskonfiguriert 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-refskonfiguriert 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
siteausgefü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.moduleals 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-pydebugkonfiguriert ist.Added in version 3.13.