1.2. Umgebungsvariablen¶
Diese Umgebungsvariablen beeinflussen Pythons Verhalten, sie werden verarbeitetvor den Befehlszeilenschaltern außer-E oder-I. Es ist üblich, dass Kommandozeilenschalter Umgebungsvariablen überschreiben, bei denen aconflict vorhanden ist.
¶
Ändern Sie den Speicherort der Standard-Python-Bibliotheken., Standardmäßig werden die Bibliotheken in prefix/lib/pythonversion
undexec_prefix/lib/pythonversion
durchsucht, wobei prefix
undexec_prefix
installationsabhängige Verzeichnisse sind, beide defaultingto /usr/local
.
Wenn auf ein einzelnes Verzeichnis gesetzt ist, ersetzt sein Wertboth prefix
und exec_prefix
. Um verschiedene Werte für diese anzugeben, setzen Sie auf prefix:exec_prefix
.
PYTHONPATH
¶
Erweitern Sie den Standardsuchpfad für Moduldateien., Das Format ist dasselbe wie die PATH
der Shell: ein oder mehrere Verzeichnispathnames getrennt durchos.pathsep
(z. B. Doppelpunkte unter Unix oder Semikolons unter Windows).Nicht vorhandene Verzeichnisse werden stillschweigend ignoriert.
Zusätzlich zu normalen Verzeichnissen beziehen sich einzelne PYTHONPATH
– Einträge auf Zipfiles, die reine Python-Module enthalten (entweder in Quell-oderkompilierter Form). Erweiterungsmodule können nicht aus Zipfiles importiert werden.,
Der Standardsuchpfad ist installationsabhängig, beginnt aber im Allgemeinen mitprefix/lib/pythonversion
(siehe oben). Es wird immer an PYTHONPATH
angehängt.
Ein zusätzliches Verzeichnis wird in den Suchpfad vorPYTHONPATH
eingefügt, wie oben unterInterface options beschrieben. Der Suchpfad kann von manipuliertinnerhalb eines Python-Programms als Variable sys.path
.
PYTHONPLATLIBDIR
¶
Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, überschreibt es den Wert sys.platlibdir
.,
Neu in version 3.9.
PYTHONSTARTUP
¶
Wenn dies der Name einer lesbaren Datei ist, werden die Python-Befehle in dieser Datei verfolgt, bevor die erste Eingabeaufforderung im interaktiven Modus angezeigt wird. Die Datei wird im selben Namespace ausgeführt, in dem interaktive Befehle ausgeführt werdendass darin definierte oder importierte Objekte ohne Qualifikation in der interaktiven Sitzung verwendet werden können. Sie können auch die Eingabeaufforderungen sys.ps1
undsys.ps2
und den Hook sys.__interactivehook__
in dieser Datei ändern.,
Löst ein Auditing-Ereignis aus cpython.run_startup
mit dem Dateinamen als Argument beim Aufruf beim Start.
PYTHONOPTIMIZE
¶
Wenn dies auf eine nicht leere Zeichenfolge festgelegt ist, entspricht dies der Angabe der Option-O
. Wenn auf eine Ganzzahl gesetzt, entspricht es der Angabe-O
mehrmals.
PYTHONBREAKPOINT
¶
Wenn dies festgelegt ist, benennt es eine aufrufbare mit punktierter Pfadnotation., Das Modul, das die aufrufbare enthält, wird importiert und dann wird die aufrufbare von der Standardimplementierung von sys.breakpointhook()
die selbst durch die integrierte breakpoint()
. Wenn nicht gesetzt oder auf den emptystring gesetzt, entspricht dies dem Wert “ pdb.set_trace“. Wenn Sie dies auf den Wert „0“ setzen, führt die Standardimplementierung von sys.breakpointhook()
dazu, dass nichts anderes als sofort zurückgegeben wird.
Neu in version 3.7.,
PYTHONDEBUG
¶
Wenn dies auf eine nicht leere Zeichenfolge festgelegt ist, entspricht dies der Angabe der Option-d
. Wenn auf eine Ganzzahl gesetzt, entspricht es der Angabe-d
mehrmals.
PYTHONOLDPARSER
¶
Wenn dies auf eine nicht leere Zeichenfolge festgelegt ist, aktivieren Sie den herkömmlichen LL(1)-Parser.
Siehe auch -X
oldparser
option und PEP 617.
Seit Version 3.9 veraltet, wird in Version 3.10 entfernt.,
PYTHONINSPECT
¶
Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, entspricht dies der Angabe der Option-i
.
Diese Variable kann auch durch Python-Code mit os.environ
geändert werden, um den Inspect-Modus beim Beenden des Programms zu erzwingen.
PYTHONUNBUFFERED
¶
Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, entspricht dies der Angabe der Option-u
.
PYTHONVERBOSE
¶
Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, entspricht dies der Angabe der Option-v
., Wenn auf eine Ganzzahl gesetzt, entspricht es der Angabe-v
mehrmals.
PYTHONCASEOK
¶
Wenn dies gesetzt ist, ignoriert Python case in import
Anweisungen. Dies funktioniert auch unter Windows und OS X.
PYTHONDONTWRITEBYTECODE
¶
Wenn dies auf eine nicht leere Zeichenfolge festgelegt ist, versucht Python nicht, .pyc
Dateien beim Import von Quellmodulen zu schreiben. Dies entspricht der Überprüfung der-B
Option.,
PYTHONPYCACHEPREFIX
¶
Wenn dies festgelegt ist, schreibt Python .pyc
Dateien in einem Spiegelverzeichnis treeat diesen Pfad, anstatt in __pycache__
Verzeichnisse innerhalb des sourcetree. Dies entspricht der Angabe der Option -X
pycache_prefix=PATH
.
Neu in version 3.8.
PYTHONHASHSEED
¶
Wenn diese Variable nicht gesetzt oder auf random
gesetzt ist, wird ein Zufallswert verwendetum die Hashes von str-und bytes-Objekten zu setzen.,
Wenn PYTHONHASHSEED
auf einen ganzzahligen Wert gesetzt ist, wird es als fixedseed zum Generieren des hash() der von der hashrandomization abgedeckten Typen verwendet.
Sein Zweck besteht darin, wiederholbares Hashing zuzulassen, z. B. für Selbsttests für Theinterpreter selbst, oder einem Cluster von Python-Prozessen die Freigabe von Hashwerten zu ermöglichen.
Die Ganzzahl muss eine Dezimalzahl im Bereich sein . Specifyingthe Wert 0 deaktiviert die Hash-Randomisierung.
Neu in version 3.2.3.,
PYTHONIOENCODING
¶
Wenn dies vor dem Ausführen des Interpreters festgelegt ist, überschreibt es die für stdin/stdout/stderr verwendete Codierung in der Syntax encodingname:errorhandler
. Sowohl die encodingname
als auch die :errorhandler
Teile sind optional und haben die gleiche Bedeutung wie in str.encode()
.
Für stderr wird der :errorhandler
– Teil ignoriert; Der Handler ist immer'backslashreplace'
.
Geändert in Version 3.4 :Derencodingname
Teil ist jetzt optional.
In Version 3 geändert.,6: Unter Windows wird die von dieser Variablen angegebene Codierung für Interactiveconsole-Puffer ignoriert, es sei denn, PYTHONLEGACYWINDOWSSTDIO
wird ebenfalls angegeben.Dateien und Pipes, die über die Standard-Streams umgeleitet werden, sind nicht betroffen.
PYTHONNOUSERSITE
¶
Wenn dies festgelegt ist, fügt Python die user site-packages directory
nicht zu sys.path
hinzu.,
Siehe auch
PEP 370 – Per user site-packages directory
PYTHONUSERBASE
¶
Definiert die user base directory
, die verwendet wird, um den Pfad der user site-packages directory
und Distutils Installationspfade fürpython setup.py install --user
.
Siehe auch
PEP 370-Per user site-packages directory
PYTHONEXECUTABLE
¶
Wenn diese Umgebungsvariable gesetzt ist, wird sys.argv
auf itsvalue anstelle des Werts gesetzt, der über die C-Laufzeit erhalten wurde. Funktioniert nur aufmac OS X.,
PYTHONWARNINGS
¶
Dies entspricht der Option -W
. Wenn eine kommaseparierte Zeichenkette, es ist äquivalent zu -W
multipletimes, mit Filter unten in der Liste Vorrang vor diesen earlierin der Liste.
Die einfachsten Einstellungen wenden eine bestimmte Aktion bedingungslos auf alle von einem Prozess ausgegebenen Warnungen an (auch solche, die sonst vondefault ignoriert werden):
PYTHONWARNINGS=default # Warn once per call locationPYTHONWARNINGS=error # Convert to exceptionsPYTHONWARNINGS=always # Warn every timePYTHONWARNINGS=module # Warn once per calling modulePYTHONWARNINGS=once # Warn once per Python processPYTHONWARNINGS=ignore # Never warn
Siehe Warnfilter und Beschreibung von Warnfiltern für mehrdetails.,
PYTHONFAULTHANDLER
¶
Wenn diese Umgebungsvariable auf eine nicht leere Zeichenfolge gesetzt ist, wirdfaulthandler.enable()
beim Start aufgerufen: Installieren Sie einen Handler fürSIGSEGV
, SIGFPE
, SIGABRT
, SIGBUS
undSIGILL
signalisieren das Python-Traceback. Dies entspricht der Option-X
faulthandler
.
Neu in version 3.3.,
PYTHONTRACEMALLOC
¶
Wenn diese Umgebungsvariable auf eine nicht leere Zeichenfolge festgelegt ist, starten Sie die tracingPython-Speicherzuweisung mit dem Modul tracemalloc
. Der Wert der Variablen ist die maximale Anzahl von Frames, die in einem Traceback von atrace gespeichert sind. Zum Beispiel speichert nur den aktuellstenframe. Siehe tracemalloc.start()
für weitere Informationen.
Neu in version 3.4.
PYTHONPROFILEIMPORTTIME
¶
Wenn diese Umgebungsvariable auf eine nicht leere Zeichenfolge festgelegt ist, zeigt Python an, wie lange jeder Import dauert., Dies entspricht genau der Einstellung-X importtime
in der Befehlszeile.
Neu in version 3.7.
PYTHONASYNCIODEBUG
¶
Wenn diese Umgebungsvariable auf einen nicht leeren String gesetzt ist, aktivieren Sie dendebug-Modus des asyncio
Moduls.
Neu in version 3.4.
PYTHONMALLOC
¶
Legen Sie die Python-Speicherzuordnungen fest und/oder installieren Sie Debug-Hooks.,
Legen Sie die Familie der von Python verwendeten Speicherzuordnungen fest:
Installieren Sie Debug-Hooks:
-
debug
: Installieren Sie Debug-Hooks über den Standard-Memoryallocators. -
malloc_debug
: wiemalloc
Installieren Sie aber auch Debug-Hooks. -
pymalloc_debug
: wiepymalloc
Installieren Sie aber auch Debug-Hooks.
Siehe die Standardspeicherzuordnungen und diePyMem_SetupDebugHooks()
– Funktion (installieren Sie Debug-Hooks für Pythonmemory-Zuordnungen).
In Version 3 geändert.,7: Hinzugefügt die "default"
allocator.
Neu in version 3.6.
PYTHONMALLOCSTATS
¶
Wenn auf eine nicht leere Zeichenfolge gesetzt, wird Python Statistiken derpymalloc memory allocator jedes Mal, wenn eine neue pymalloc objectarena erstellt wird, und beim Herunterfahren.
Diese Variable wird ignoriert, wenn diePYTHONMALLOC
Umgebungsvariableist verwendet, um diemalloc()
Allokator der C-Bibliothek zu erzwingen, oder ifPython ist ohnepymalloc
Unterstützung konfiguriert.
In Version 3 geändert.,6: Diese Variable kann jetzt auch für Python verwendet werden, das in Release kompiliert wurde mode.It hat jetzt keine Wirkung, wenn auf eine leere Zeichenfolge gesetzt.
PYTHONLEGACYWINDOWSFSENCODING
¶
Wenn auf eine nicht leere Zeichenfolge gesetzt, die Standard-Dateisystem-Codierung und Fehler modewill wieder auf ihre vorinstallierten Werte von ‚mbcs‘ und ‚ersetzen‘, beziehungsweise.Andernfalls werden die neuen Standardwerte ‚utf-8′ und ’surrogatepass‘ verwendet.
Dies kann auch zur Laufzeit mitsys._enablelegacywindowsfsencoding()
aktiviert werden.
Verfügbarkeit: Windows.
Neu in version 3.6: Siehe PEP 529 für mehr details.,
PYTHONLEGACYWINDOWSSTDIO
¶
Wenn auf eine nicht leere Zeichenfolge gesetzt, verwendet nicht die neue Konsole reader andwriter. Dies bedeutet, dass Unicode-Zeichen entsprechend codiert werdendie aktive Konsolencodeseite, anstatt utf-8 zu verwenden.
Diese Variable wird ignoriert, wenn die Standardstreams (zu Filesor-Pipes) umgeleitet werden, anstatt auf Konsolenpuffer zu verweisen.
Verfügbarkeit: Windows.
Neu in version 3.6.,
PYTHONCOERCECLOCALE
¶
Wenn auf den Wert 0
, bewirkt, dass die Haupt Python-Befehlszeilenanwendung überspringt, die Legacy-ASCII-basierten C-und POSIX-Gebietsschemata zu einer leistungsfähigeren UTF-8-basierten Alternative zu zwingen.,wenn das explizit ASCII-basierte Gebietsschema POSIX
verwendet wird, versucht thePython CLI, die folgenden Gebietsschemata für die KategorieLC_CTYPE
in der angegebenen Reihenfolge zu konfigurieren, bevor die Interpreterlaufzeit geladen wird:
-
C.UTF-8
-
C.utf8
-
UTF-8
Wenn die Einstellung einer dieser Locale-Kategorien erfolgreich ist, wird auch die Umgebungsvariable LC_CTYPE
in der aktuellen Prozessumgebung entsprechend festgelegt, bevor die Python-Laufzeit initialisiert wird., Dadurch wird sichergestellt, dass die aktualisierte Einstellung nicht nur vom Interpreter selbst, sondern auch von anderen locale-Awarekomponenten, die im selben Prozess ausgeführt werden (z. B. der GNU readline
– Bibliothek), sondern auch in Unterprozessen angezeigt wird (unabhängig davon, ob diese Prozesse einen Python-Interpreter ausführen oder nicht), sowie in Operationen, die die Umgebung und nicht das aktuelle C-Gebietsschema abfragen(z. B. Pythons eigene locale.getdefaultlocale()
).,
Wenn Sie einen dieser Gebietsschemata konfigurieren (entweder explizit oder über den oben genannten impliziten Gebietsschemaszwang), wird automatisch der surrogateescape
– Fehlerhandler für sys.stdin
undsys.stdout
(sys.stderr
verwendet weiterhin backslashreplace
als es tut in jedem anderen Gebietsschema). Dieses Stream-Handling-Verhalten kann wie gewohnt mit PYTHONIOENCODING
überschrieben werden.,
Wenn Sie PYTHONCOERCECLOCALE=warn
Für Debugging-Zwecke setzen, wird veranlasst, dasspython Warnmeldungen für stderr
ausgibt, wenn entweder das Gebietsschema aktiviert wird, oder wenn ein Gebietsschema, das Zwang ausgelöst hätte, nicht aktiv ist, wenn die Python-Laufzeit initialisiert wird.
Beachten Sie auch, dass PYTHONUTF8
auch dann bydefault in älteren ASCII-basierten Gebietsschemas aktiviert, wenn Gebietsschemaszwang deaktiviert ist oder wenn kein geeignetes Zielgebietsschema gefunden werden kann., Beide Funktionen müssen deaktiviert sein, um den Interpreter zu zwingen, anstelle von UTF-8
für Systemschnittstellen zu verwenden.
Verfügbarkeit: *nix.
Neu in version 3.7: Siehe PEP 538 für mehr details.
PYTHONDEVMODE
¶
Wenn diese Umgebungsvariable auf eine nicht leere Zeichenfolge festgelegt ist, enablePython Entwicklungsmodus, Einführung zusätzlicher Runtimechecks, die standardmäßig zu teuer sind, um aktiviert zu werden.
Neu in version 3.7.,
PYTHONUTF8
¶
Wenn auf 1
gesetzt, wird der UTF-8-Modus des Interpreters aktiviert, wobei UTF-8
als Textcodierung für Systemschnittstellen verwendet wird, unabhängig von der aktuellen Gebietsschemaseinstellung.
Dies bedeutet:
sys.getfilesystemencoding()
gibt'UTF-8'
zurück (die localeencoding wird ignoriert).
locale.getpreferredencoding()
gibt'UTF-8'
zurück (die localeencoding wird ignoriert und der Parameterdo_setlocale
der Funktion hat keine Auswirkung).,F-8 als Textcodierung, wobei dersurrogateescape
-Fehlerhandler fürsys.stdin
undsys.stdout
aktiviert ist (sys.stderr
verwendet weiterhinbackslashreplace
wie im standardmäßigen Locale-Aware-Modus)
Infolge der Änderungen dieser APIs auf niedrigerer Ebene weisen auch andere APIs auf höherer Ebene unterschiedliche Standardverhalten auf:
Befehlszeilenargumente, Umgebungsvariablen und Dateinamen werden mithilfe der UTF-8-Codierung in Text decodiert.,
os.fsdecode()
undos.fsencode()
verwenden Sie die UTF-8-Codierung.
open()
,io.open()
undcodecs.open()
Verwenden Sie standardmäßig die UTF-8encodierung. Sie verwenden jedoch immer noch den strikten Fehlerhandler bydefault, sodass der Versuch, eine Binärdatei im Textmodus zu öffnen, wahrscheinlich eine Ausnahme auslöst, anstatt unsinnige Daten zu erzeugen.,Beachten Sie, dass die Standard-Stream-Einstellungen im UTF-8-Modus von
PYTHONIOENCODING
überschrieben werden können (so wie sie sich im Standard-Locale-awaremode befinden können).Wenn der Interpreter auf
0
gesetzt ist, wird er im Standardmodus locale-aware ausgeführt.Das Setzen einer anderen nicht leeren Zeichenfolge verursacht einen Fehler während der Interpreterinitialisierung.,
Wenn diese Umgebungsvariable überhaupt nicht festgelegt ist, verwendet der Interpreter standardmäßig die aktuellen Gebietsschemaseinstellungen, es sei denn, das aktuelle Gebietsschema istidentifiziert als Legacy-ASCII-basiertes Gebietsschema(wie für
PYTHONCOERCECLOCALE
beschrieben) und Gebietsschemas Erzwingen ist entweder deaktiviert oder schlägt fehl. In solchen Legacy-Gebietsschemas wird der Interpreter den UTF-8-Modus deaktivieren, es sei denn, er wird ausdrücklich angewiesen, dies nicht zu tun.Auch als
-X
utf8
option.Neu in version 3.7: Siehe PEP 540 für mehr details.
1.2.1., Debug-Mode-Variablen¶
Das Setzen dieser Variablen hat nur einen Effekt in einem Debug-Build von Python.
PYTHONTHREADDEBUG
¶Wenn festgelegt, druckt Python Threading-Debug-Informationen.
Benötigt Python konfiguriert mit der
--with-pydebug
Build-Option.
PYTHONDUMPREFS
¶Wenn festgelegt, speichert Python Objekte und Referenzzählungen, die nach dem Herunterfahren des Interpreters noch am Leben sind.
Python muss mit der Build-Option
--with-trace-refs
konfiguriert werden.