1.2. Zmienne środowiskowe¶
te zmienne środowiskowe wpływają na zachowanie Pythona, są przetwarzane przed przełącznikami wiersza poleceń innymi niż-E lub-I. zwyczajowo przełączniki wiersza poleceń zastępują zmienne środowiskowe tam, gdzie występuje konflikt.
PYTHONHOME
¶
Zmiana lokalizacji standardowych bibliotek Pythona., Domyślnie, biblioteki są wyszukiwane w prefix/lib/pythonversion
Iexec_prefix/lib/pythonversion
, gdzie prefix
Iexec_prefix
są katalogami zależnymi od instalacji, oba domyślnie są /usr/local
.
GdyPYTHONHOME
jest ustawiony na pojedynczy katalog, jego wartość zastępujeprefix
Iexec_prefix
. Aby określić różne wartości dla tych wartości, Ustaw PYTHONHOME
na prefix:exec_prefix
.
PYTHONPATH
¶
rozszerza domyślną ścieżkę wyszukiwania dla plików modułów., Format jest taki sam jak powłoki PATH
: jedna lub więcej ścieżek katalogów oddzielonychos.pathsep
(np. dwukropki w systemie Unix lub średniki w systemie Windows).Nieistniejące katalogi są po cichu ignorowane.
oprócz zwykłych katalogów, poszczególne wpisy PYTHONPATH
mogą odnosić się do plików ZipFile zawierających czyste Moduły Pythona (w formie źródłowej lub skompilowanej). Moduły rozszerzeń nie mogą być importowane z zipfiles.,
domyślna ścieżka wyszukiwania jest zależna od instalacji, ale zazwyczaj zaczyna się odprefix/lib/pythonversion
(zobaczPYTHONHOME
powyżej). Jest zawsze dołączany do PYTHONPATH
.
dodatkowy katalog zostanie wstawiony w ścieżce wyszukiwania przedPYTHONPATH
, jak opisano powyżej pod opcjami interfejsu. Ścieżka wyszukiwania może być manipulowana przez program Pythona jako zmienna sys.path
.
PYTHONPLATLIBDIR
¶
Jeśli jest ustawiony na niepusty łańcuch, nadpisuje wartośćsys.platlibdir
.,
nowość w wersji 3.9.
PYTHONSTARTUP
¶
jeśli jest to nazwa czytelnego pliku, polecenia Pythona w tym pliku są usuwane, zanim pierwszy wiersz zostanie wyświetlony w trybie interaktywnym. Plik jest wykonywany w tej samej przestrzeni nazw, w której wykonywane są interaktywne polecenia, dzięki czemu zdefiniowane lub zaimportowane w nim obiekty mogą być używane bez kwalifikacji w sesji interaktywnej. Możesz również zmienić monity sys.ps1
Isys.ps2
oraz hook sys.__interactivehook__
w tym pliku.,
wywołuje zdarzenie audytucpython.run_startup
z nazwą pliku jako argumentem podczas uruchamiania.
PYTHONOPTIMIZE
¶
jeśli jest ustawiony na niepusty łańcuch, jest to równoważne określeniu opcji-O
. Jeśli jest ustawiona na liczbę całkowitą, jest to równoważne wielokrotnemu podawaniu-O
.
PYTHONBREAKPOINT
¶
jeśli jest to ustawione, nazywa się funkcję wywołania za pomocą notacji kropkowanej., Modulecontraing the callable zostanie zaimportowany, a następnie wywołanie zostanie uruchomione przez domyślną implementację sys.breakpointhook()
, która sama jest wywoływana przez wbudowanybreakpoint()
. Jeśli nie jest ustawiona lub jest ustawiona na emptystring, jest ona równoważna wartości ” pdb.set_trace” Ustawienie tej wartości na thestring” 0 „powoduje, że domyślna implementacja sys.breakpointhook()
nie robi nic poza natychmiastowym powrotem.
nowość w wersji 3.7.,
PYTHONDEBUG
¶
jeśli jest ustawiony na niepusty łańcuch, jest to równoważne określeniu opcji-d
. Jeśli jest ustawiona na liczbę całkowitą, jest to równoważne wielokrotnemu podawaniu-d
.
PYTHONOLDPARSER
¶
jeśli jest ustawiony na niepusty łańcuch, włącz tradycyjny parser LL(1).
Zobacz również opcję -X
oldparser
I PEP 617.
przestarzałe od wersji 3.9, zostaną usunięte w wersji 3.10.,
PYTHONINSPECT
¶
jeśli jest ustawiony na niepusty łańcuch, jest to równoważne określeniu opcji-i
.
zmienna ta może być również modyfikowana przez kod Pythona przy użyciuos.environ
, aby wymusić tryb inspekcji przy zakończeniu programu.
PYTHONUNBUFFERED
¶
jeśli jest ustawiony na niepusty ciąg znaków, jest to równoważne określeniu opcji-u
.
PYTHONVERBOSE
¶
jeśli jest ustawiony na niepusty łańcuch, jest to równoważne określeniu opcji-v
., Jeśli jest ustawiona na liczbę całkowitą, jest to równoważne wielokrotnemu podawaniu-v
.
PYTHONCASEOK
¶
Jeśli jest ustawione, Python ignoruje wielkość liter wimport
. Thisonly działa tylko na Windows i OS X.
PYTHONDONTWRITEBYTECODE
¶
Jeśli jest ustawiony na niepusty ciąg znaków, Python nie będzie próbował zapisywać plików.pyc
podczas importu modułów źródłowych. Jest to równoważne z opcją -B
.,
PYTHONPYCACHEPREFIX
¶
Jeśli jest to ustawione, Python zapisze.pyc
pliki w drzewie katalogu lustrzanego, zamiast w__pycache__
katalogi w drzewie źródłowym. Jest to równoważne określeniu opcji -X
pycache_prefix=PATH
.
nowość w wersji 3.8.
PYTHONHASHSEED
¶
Jeśli ta zmienna nie jest ustawiona lub ustawiona narandom
, używana jest losowa wartość do zalania hashów obiektów str i bajtów.,
JeśliPYTHONHASHSEED
jest ustawiona na wartość całkowitą, jest używana jako fixedseed do generowania hash() typów objętych hashrandomizacją.
jego celem jest umożliwienie powtarzalnego hashowania, takiego jak selftesty dla samego interpretatora, lub umożliwienie klastrowi procesów Pythona współdzielenia wartości hash.
liczba całkowita musi być liczbą dziesiętną w zakresie . Określenie wartości 0 wyłączy randomizację skrótu.
nowość w wersji 3.2.3.,
PYTHONIOENCODING
¶
jeśli jest ustawione przed uruchomieniem interpretera, nadpisuje kodowanie używane dla stdin/stdout/stderr, w składniencodingname:errorhandler
. Obie części encodingname
I :errorhandler
są opcjonalne i mają takie samo znaczenie jak w str.encode()
.
dla stderr, część:errorhandler
jest ignorowana; obsługa zawsze będzie'backslashreplace'
.
zmieniono w wersji 3.4: częśćencodingname
jest teraz opcjonalna.
zmieniono w wersji 3.,6: w systemie Windows kodowanie określone przez tę zmienną jest ignorowane dla buforów interactiveconsole, chyba że podano również PYTHONLEGACYWINDOWSSTDIO
.Pliki i rury przekierowane przez standardowe strumienie nie są naruszone.
PYTHONNOUSERSITE
¶
Jeśli to jest ustawione, Python nie dodauser site-packages directory
dosys.path
.,
Zobacz także
Pep 370 – Katalog Stron Użytkowników-Pakiety
PYTHONUSERBASE
¶
definiuje user base directory
, który jest używany do obliczania ścieżki user site-packages directory
I rozdziela ścieżki instalacji dlapython setup.py install --user
.
patrz również
katalog PEP 370 – Per user site-packages
PYTHONEXECUTABLE
¶
jeśli zmienna środowiskowa jest ustawiona,sys.argv
zostanie ustawiona na itsvalue zamiast wartości uzyskanej w środowisku uruchomieniowym C. Działa tylko na Mac OS X.,
PYTHONWARNINGS
¶
jest to równoważne opcji-W
. Jeśli jest ustawiony na oddzielony przecinkiem łańcuch, jest to równoważne z określeniem-W
multipletów, z filtrami na liście, które mają pierwszeństwo przed tymi, które były wcześniej na liście.
najprostsze ustawienia bezwarunkowo stosują daną akcję do wszystkich ostrzeżeń emitowanych przez proces (nawet tych, które są ignorowane przez domyślny):
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
Zobacz Filtr ostrzeżeń i opis filtrów ostrzegawczych dla moredetails.,
PYTHONFAULTHANDLER
¶
jeśli zmienna środowiskowa jest ustawiona na niepusty ciąg znaków,faulthandler.enable()
jest wywoływana podczas uruchamiania: zainstaluj program obsługi dlaSIGSEGV
,SIGFPE
,SIGABRT
,SIGBUS
ISIGILL
sygnały do zrzutu traceback Pythona. Jest to równoważne opcji-X
faulthandler
.
nowość w wersji 3.3.,
PYTHONTRACEMALLOC
¶
jeśli zmienna środowiskowa jest ustawiona na niepusty ciąg znaków, rozpocznij śledzenie alokacji pamięci za pomocą modułutracemalloc
. Wartość zmiennej jest maksymalną liczbą klatek zapisanych w traceback oftrace. Na przykład PYTHONTRACEMALLOC=1
przechowuje tylko najnowszą ramkę. Zobacz tracemalloc.start()
aby uzyskać więcej informacji.
nowość w wersji 3.4.
PYTHONPROFILEIMPORTTIME
¶
jeśli zmienna środowiskowa jest ustawiona na niepusty łańcuch, Python pokaże, jak długo trwa import., Jest to dokładnie równoważne ustawieniu-X importtime
w wierszu poleceń.
nowość w wersji 3.7.
PYTHONASYNCIODEBUG
¶
jeśli zmienna środowiskowa jest ustawiona na niepusty łańcuch, włącz tryb Bug modułuasyncio
.
nowość w wersji 3.4.
PYTHONMALLOC
¶
Ustawia alokatory pamięci Pythona i / lub instaluje Hooki debugowania.,
Ustawia rodzinę alokatorów pamięci używanych w Pythonie:
Install debug hooks:
-
debug
: instaluje debug hooks na domyślnych pamięciach. -
malloc_debug
: tak samo jakmalloc
ale także instaluj Hooki debugowania. -
pymalloc_debug
: tak samo jakpymalloc
ale także instaluj Hooki debugowania.
Zobacz domyślne alokatory pamięci i funkcjęPyMem_SetupDebugHooks()
(install debug hooks on Pythonmemory allocators).
zmieniono w wersji 3.,7: Dodano alokator "default"
.
nowość w wersji 3.6.
PYTHONMALLOCSTATS
¶
Jeśli ustawiony jest na niepusty łańcuch, Python wyświetli statystyki alokatora pamięci pymalloc za każdym razem, gdy tworzony jest nowy obiekt pymalloc, oraz podczas zamykania.
ta zmienna jest ignorowana, jeśli zmienna środowiskaPYTHONMALLOC
jest używana do wymuszenia alokatora malloc()
biblioteki C lub ifpython jest skonfigurowana bez obsługi pymalloc
.
zmieniono w wersji 3.,6: ta zmienna może być teraz również używana w Pythonie skompilowanym w wydaniu mode.It teraz nie ma żadnego efektu, jeśli jest ustawiony na pusty łańcuch.
PYTHONLEGACYWINDOWSFSENCODING
¶
jeśli ustawiony jest na niepusty łańcuch, domyślne kodowanie systemu plików i tryb błędów powrócą do wartości sprzed 3.6 odpowiednio 'mbcs' i 'replace'.W przeciwnym razie używane są nowe wartości domyślne „utf-8” i „surogatepass”.
może to być również włączone w czasie wykonywania za pomocąsys._enablelegacywindowsfsencoding()
.
dostępność: Windows.
nowość w wersji 3.6: Zobacz PEP 529 po więcej szczegółów.,
PYTHONLEGACYWINDOWSSTDIO
¶
jeśli ustawiony jest na niepusty ciąg znaków, nie korzysta z nowego czytnika konsoli i Oznacza to, że znaki Unicode będą kodowane zgodnie z aktywną stroną kodową konsoli, zamiast używać utf-8.
ta zmienna jest ignorowana, jeśli standardowe strumienie są przekierowywane (do rur plików) zamiast odwoływać się do buforów konsoli.
dostępność: Windows.
nowość w wersji 3.6.,
PYTHONCOERCECLOCALE
¶
Jeśli ustawiona jest na wartość0
, powoduje, że główna aplikacja wiersza poleceń Pythona pomija wymuszanie starszych języków C opartych na ASCII i POSIX do bardziej możliwej do odczytania alternatywy opartej na UTF-8.,w przeciwnym wypadku POSIX
locale, THEPYTHON CLI spróbuje skonfigurować następujące lokalizacje dla kategoriiLC_CTYPE
w kolejności podanej przed załadowaniem interpreterruntime:
-
C.UTF-8
-
C.utf8
-
UTF-8
Jeśli ustawienie jednej z tych kategorii locale powiedzie się, wtedy zmienna środowiskowa LC_CTYPE
zostanie również ustawiona odpowiednio w bieżącym środowisko procesowe przed zainicjowaniem środowiska uruchomieniowego Pythona., Zapewnia to, że oprócz bycia widzianym zarówno przez samego interpretera, jak i inne komponenty locale-awarecomponents działające w tym samym procesie (takie jak biblioteka GNU readline
), zaktualizowane ustawienie jest również widoczne w podprocesach (niezależnie od tego, czy procesy te uruchamiają interpreter Pythona, czy nie), a także w operacjach, które pytają o środowisko, a nie o bieżące ustawienia regionalne C(takie jak własne Pythona locale.getdefaultlocale()
).,
Konfiguracja jednej z tych lokalizacji (jawnie lub za pomocą powyższego przymusu lokalnego) automatycznie włącza surrogateescape
obsługa błędów sys.stdin
Isys.stdout
(sys.stderr
div>nadal używa backslashreplace
tak jak w innych ustawieniach regionalnych). To zachowanie obsługi strumienia można jak zwykle zmienić używając PYTHONIOENCODING
.,
dla celów debugowania, ustawieniePYTHONCOERCECLOCALE=warn
spowoduje, żeepython będzie emitował komunikaty ostrzegawcze nastderr
jeśli albo spowoduje aktywację przymusu lokalnego, albo jeśli Ustawienia regionalne, które wywołałyby przymus, są nadal aktywne podczas inicjalizacji środowiska uruchomieniowego Pythona.
zauważ również, że nawet gdy przymus locale jest wyłączony lub gdy nie uda się znaleźć odpowiedniego docelowego ustawienia locale,PYTHONUTF8
będzie nadal aktywowany przezault w starszych lokalizacjach opartych na ASCII., Obie funkcje muszą być wyłączone Worder, aby zmusić interpreter do używania ASCII
zamiastUTF-8
dla interfejsów systemowych.
dostępność: *nix.
nowość w wersji 3.7: Zobacz PEP 538 po więcej szczegółów.
PYTHONDEVMODE
¶
jeśli zmienna środowiskowa jest ustawiona na niepusty łańcuch znaków, włącz tryb programowania enablePython, wprowadzając dodatkowe czeki runtimechecks, które są zbyt drogie, aby można je było włączyć domyślnie.
nowość w wersji 3.7.,
PYTHONUTF8
¶
jeśli ustawiony jest na1
, włącza tryb UTF-8, w którymUTF-8
jest używany jako kodowanie tekstu dla interfejsów systemowych, niezależnie od bieżących ustawień regionalnych.
oznacza to, że:
sys.getfilesystemencoding()
zwraca'UTF-8'
(lokalne kodowanie jest ignorowane).
locale.getpreferredencoding()
zwraca'UTF-8'
(lokalne kodowanie jest ignorowane, a parametrdo_setlocale
nie ma efektu).,F-8 jako kodowanie tekstu, zsurrogateescape
obsługa błędów jest włączona dlasys.stdin
Isys.stdout
(sys.stderr
nadal używabackslashreplace
tak jak w domyślnym trybie locale-aware)
w wyniku zmian w tych interfejsach API niższego poziomu, inne interfejsy API wyższego poziomu również wykazują różne domyślne zachowania:
argumenty linii poleceń, zmienne środowiskowe i nazwy plików są dekodowane do tekstu przy użyciu kodowania UTF-8.,
os.fsdecode()
Ios.fsencode()
używają kodowania UTF-8.
open()
,io.open()
Icodecs.open()
domyślnie używają kodowania UTF-8encoding. Jednak nadal używają ścisłego programu obsługi błędów byfault, tak że próba otwarcia pliku binarnego w trybie tekstowym jest prawdopodobnie spowodowana wywołaniem wyjątku, a nie wytwarzaniem bzdurnych danych.,
należy pamiętać, że standardowe ustawienia strumienia w trybie UTF-8 mogą być nadpisane przezPYTHONIOENCODING
(tak jak mogą być w domyślnych ustawieniach regionalnych-awaremode).
Jeśli zostanie ustawione na0
, interpreter będzie uruchamiany w domyślnym trybie lokalnym.
ustawienie innego niepustego ciągu powoduje błąd podczas inicjalizacji interpretera.,
Jeśli ta zmienna środowiskowa nie jest w ogóle ustawiona, to interpreter domyślnie używa bieżących ustawień regionalnych, chyba że bieżące ustawienia regionalne są identyfikowane jako starsze ustawienia regionalne oparte na ASCII (jak opisano dla PYTHONCOERCECLOCALE
), a przymus lokalny jest wyłączony lub nie działa. W takich starszych lokalizacjach interpreter będzie mógł włączyć tryb UTF-8, chyba że wyraźnie poleci, aby tego nie robić.
dostępne również jako opcja -X
utf8
.
nowość w wersji 3.7: Zobacz PEP 540 po więcej szczegółów.
1.2.1., Zmienne w trybie debugowania¶
ustawienie tych zmiennych ma wpływ tylko w kompilacji debugowania Pythona.
PYTHONTHREADDEBUG
¶
Jeśli jest ustawiony, Python wyświetli informacje o debugowaniu wątków.
wymaga skonfigurowania Pythona z opcją budowania--with-pydebug
.
PYTHONDUMPREFS
¶
Jeśli jest ustawione, Python zrzuci obiekty i zliczenia referencji jeszcze żywe, po tym jak interpreter zostanie usunięty.
wymaga skonfigurowania Pythona z opcją budowania--with-trace-refs
.