1.2. Proměnné prostředí¶
Tyto proměnné prostředí vliv Python chování, jsou processedbefore přepínače příkazového řádku, jiných než -E nebo -I. To je obvyklé thatcommand-line přepínače přepíše proměnné prostředí tam, kde je aconflict.
PYTHONHOME
¶
změňte umístění standardních knihoven Pythonu., Ve výchozím nastavení, thelibraries jsou vyhledávány v prefix/lib/pythonversion
exec_prefix/lib/pythonversion
, kde prefix
exec_prefix
instalace-závislé adresářů, a to jak defaultingto /usr/local
.
Když PYTHONHOME
je nastaven na jeden adresář, jeho hodnota replacesboth prefix
exec_prefix
. Pro zadání různých hodnot pro tyto hodnoty nastavte PYTHONHOME
na prefix:exec_prefix
.
PYTHONPATH
¶
rozšířit výchozí vyhledávací cestu pro soubory modulů., Formát je stejný jako PATH
: jeden nebo více adresářových názvů oddělenýchos.pathsep
(např.Neexistující adresáře jsou tiše ignorovány.
kromě běžných adresářů, jednotlivé PYTHONPATH
entriesmay viz zipfiles obsahující čistý Python moduly (buď ve zdrojové orcompiled formě). Rozšiřující moduly nelze importovat z zipfiles.,
výchozí cesta vyhledávání je závislá na instalaci, ale obecně začínáprefix/lib/pythonversion
(viz PYTHONHOME
výše). Je vždy připojen k PYTHONPATH
.
do vyhledávací cesty předPYTHONPATH
bude vložen další adresář, jak je popsáno výše pod možnosti interface. Vyhledávací cestu lze manipulovat zPři programu Python jako proměnná .
PYTHONPLATLIBDIR
¶
Pokud je nastavena na neprázdný řetězec, přepíše hodnotu .,
novinka ve verzi 3.9.
PYTHONSTARTUP
¶
Pokud se jedná o název čitelného souboru, příkazy Pythonu v tomto souboru jsoupřed prvním řádku se zobrazí v interaktivním režimu. Na fileis provedený ve stejném jmenném prostoru, kde interaktivní příkazy jsou provedeny, aby objekty definované nebo dovážené v něm může být použit bez kvalifikace v interaktivní relaci. Můžete také změnit vyzve sys.ps1
sys.ps2
a háček sys.__interactivehook__
v tomto souboru.,
vyvolá událost auditu cpython.run_startup
s názvem souboru jako argumentem při spuštění.
PYTHONOPTIMIZE
¶
Pokud je nastavena na neprázdný řetězec, odpovídá zadání-O
volba. Pokud je nastaveno na celé číslo, je ekvivalentní zadání-O
vícekrát.
PYTHONBREAKPOINT
¶
Pokud je nastavena, pojmenuje callable pomocí notace tečkované cesty., Na modulecontaining disponibilní budou importovány a pak disponibilní bude runby výchozí implementace sys.breakpointhook()
, který sám jmenuje podle postavený-v breakpoint()
. Pokud není nastavena nebo nastavena na prázdnoustring, je ekvivalentní hodnotě “ pdb.set_trace“. Nastavení na „0“způsobí, že výchozí implementace sys.breakpointhook()
neudělá nic jiného než se okamžitě vrátí.
novinka ve verzi 3.7.,
PYTHONDEBUG
¶
Pokud je nastavena na neprázdný řetězec, odpovídá zadání-d
volba. Pokud je nastaveno na celé číslo, je ekvivalentní zadání-d
vícekrát.
PYTHONOLDPARSER
¶
Pokud je nastavena na neprázdný řetězec, povolte tradiční ll (1) parser.
Viz také -X
oldparser
a PEP 617.
zastaralý od verze 3.9, bude odstraněn ve verzi 3.10.,
PYTHONINSPECT
¶
Pokud je nastavena na neprázdný řetězec, odpovídá zadání-i
volba.
Tato proměnná může být také změněna tím, že Python kód pomocí os.environ
vynutit zkontrolujte, zda režim na ukončení programu.
PYTHONUNBUFFERED
¶
Pokud je nastavena na neprázdný řetězec, odpovídá zadání-u
volba.
PYTHONVERBOSE
¶
Pokud je nastavena na neprázdný řetězec, odpovídá zadání volba., Pokud je nastaveno na celé číslo, je ekvivalentní zadání vícekrát.
PYTHONCASEOK
¶
Pokud je nastaveno, Python ignoruje případě v import
prohlášení. Thisonly funguje na Windows a OS X.
PYTHONDONTWRITEBYTECODE
¶
Pokud je tato možnost nastavena na non-prázdný řetězec, Python nebude snažit napsat .pyc
soubory na import zdrojových modulů. Jedná se o ekvivalentní volbu -B
.,
PYTHONPYCACHEPREFIX
¶
Pokud je nastaveno, Python bude psát .pyc
soubory v zrcadle adresář treeat tuto cestu, místo v __pycache__
adresáře v sourcetree. To odpovídá zadání -X
pycache_prefix=PATH
volba.
novinka ve verzi 3.8.
PYTHONHASHSEED
¶
Pokud tato proměnná není nastavena nebo je nastavena na random
, náhodné hodnoty je použito semeno hash str bajtů a objektů.,
Pokud PYTHONHASHSEED
je nastaven na celočíselnou hodnotu, používá se jako fixedseed pro generování hash() typy, na něž se vztahuje hashrandomization.
Jeho účelem je umožnit opakovatelné hash, jako pro selftests pro interpret sám, nebo povolit clusteru python procesy sdílet hashvalues.
celé číslo musí být desetinné číslo v rozsahu . Specifikacehodnota 0 zakáže randomizaci hash.
novinka ve verzi 3.2.3.,
PYTHONIOENCODING
¶
Pokud je nastaveno před spuštěním interpretu, přepíše kódování pro stdin/stdout/stderr, v syntaxi encodingname:errorhandler
. Cí encodingname
:errorhandler
díly jsou volitelné a máte stejný význam jako v str.encode()
.
pro stderr je část:errorhandler
ignorována; psovod bude vždy'backslashreplace'
.
změněno ve verzi 3.4: částencodingname
je nyní volitelná.
změněno ve verzi 3.,6: v systému Windows je kódování zadané touto proměnnou ignorováno pro vyrovnávací paměti interactiveconsole, pokud není také zadáno PYTHONLEGACYWINDOWSSTDIO
.Soubory a potrubí přesměrovány přes standardní proudy nejsou ovlivněny.
PYTHONNOUSERSITE
¶
Pokud je nastavena, Python nepřidá user site-packages directory
na .,
Viz také:
PEP 370 – Za uživatele site-packages adresáře
PYTHONUSERBASE
¶
Definuje user base directory
, který se používá tocompute cestu user site-packages directory
a Distutils cesty instalace propython setup.py install --user
.
Viz také:
PEP 370 – Za uživatele site-packages adresáře
PYTHONEXECUTABLE
¶
Pokud je tato proměnná nastavena, sys.argv
bude nastaven na itsvalue namísto hodnoty přes C runtime. Funguje pouze onMac OS X.,
PYTHONWARNINGS
¶
to odpovídá volbě -W
. Pokud je nastaveno na commaseparated řetězec, je ekvivalentní zadání -W
několikrát, s filtry později v seznamu mají přednost před těmi, earlierin seznamu.
nejjednodušší nastavení použít konkrétní akce bezpodmínečně allwarnings vyzařované proces (i těch, které jsou jinak ignorovány bydefault):
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
Viz Varování Filtr a Popisující Varování Filtry pro vícepodrobnosti.,
PYTHONFAULTHANDLER
¶
Pokud je tato proměnná prostředí je nastavena na non-prázdný řetězec,faulthandler.enable()
je volána při spuštění: nainstalovat handler proSIGSEGV
SIGFPE
SIGABRT
, SIGBUS
SIGILL
signály vypsat Python traceback. To odpovídá-X
faulthandler
volba.
novinka ve verzi 3.3.,
PYTHONTRACEMALLOC
¶
Pokud je tato proměnná prostředí je nastavena na non-prázdný řetězec, začátek tracingPython přidělení paměti pomocí tracemalloc
modul. Hodnota proměnné je maximální počet snímků uložených v tracebacku atrace. Například PYTHONTRACEMALLOC=1
ukládá pouze poslední snímek. Viz tracemalloc.start()
pro více informací.
novinka ve verzi 3.4.
PYTHONPROFILEIMPORTTIME
¶
Pokud je tato proměnná prostředí nastavena na neprázdný řetězec, Python ukáže, jak dlouho trvá každý import., To je přesně ekvivalentní nastavení-X importtime
na příkazovém řádku.
novinka ve verzi 3.7.
PYTHONASYNCIODEBUG
¶
Pokud je tato proměnná prostředí nastavena na neprázdný řetězec, povolte režim asyncio
modul.
novinka ve verzi 3.4.
PYTHONMALLOC
¶
nastavte přidělovače paměti Python a/nebo nainstalujte ladicí háčky.,
Nastavení rodinné paměti měřiče používá Python:
Instalovat ladění háčky:
-
debug
: instalace ladění háčky na horní části výchozího memoryallocators. -
malloc_debug
: stejně jakomalloc
ale také nainstalujte ladicí háčky. -
pymalloc_debug
: stejně jakopymalloc
ale také nainstalujte ladicí háčky.
Podívejte se na výchozí paměti měřiče aPyMem_SetupDebugHooks()
funkce (instalovat ladění háčky na Pythonmemory měřiče).
změněno ve verzi 3.,7: přidáno"default"
alokátor.
novinka ve verzi 3.6.
PYTHONMALLOCSTATS
¶
Pokud je nastavena na non-prázdný řetězec, Python bude tisknout statistiky thepymalloc přidělování paměti pokaždé, když nový pymalloc objectarena je vytvořena, a na vypnutí.
Tato proměnná je ignorována, pokud je PYTHONMALLOC
prostředí variableis slouží k vynucení malloc()
alokátor z C knihovny, nebo ifPython je nakonfigurován bez pymalloc
podpora.
změněno ve verzi 3.,6: tato proměnná může být nyní také použita na Pythonu kompilovaném ve verzi mode.It nyní nemá žádný účinek, pokud je nastaven na prázdný řetězec.
PYTHONLEGACYWINDOWSFSENCODING
¶
Pokud je nastavena na non-prázdný řetězec, výchozí souborový systém, kódování a chyby modewill vrátit zpět do jejich pre-3.6 hodnoty ‚mbcs‘ a ‚nahradit‘, resp.V opačném případě se používají nové výchozí hodnoty „utf-8“ a „surrogatepass“.
to může být také povoleno za běhu ssys._enablelegacywindowsfsencoding()
.
dostupnost: Windows.
novinka ve verzi 3.6: viz PEP 529 pro více informací.,
PYTHONLEGACYWINDOWSSTDIO
¶
Pokud je nastaven na neprázdný řetězec, nepoužívá novou čtečku konzolí andwriter. To znamená, že znaky Unicode budou kódovány podleaktivní stránka kódu konzoly, spíše než použití utf-8.
tato proměnná je ignorována, pokud jsou standardní proudy přesměrovány (na filesor pipes), spíše než odkazovat na konzolové vyrovnávací paměti.
dostupnost: Windows.
novinka ve verzi 3.6.,
PYTHONCOERCECLOCALE
¶
Pokud je nastavena na hodnotu 0
, způsobuje hlavní Python příkazového řádku aplikacechcete-li přeskočit donucování dědictví ASCII-based C a POSIX prostředí na morecapable UTF-8 na bázi alternativu.,jinak výslovně ASCII-based POSIX
locale, pak thePython CLI se pokusí nakonfigurovat následující národní prostředí proLC_CTYPE
kategorie v pořadí před načtením interpreterruntime:
-
C.UTF-8
-
C.utf8
-
UTF-8
Pokud nastavení jednoho z těchto locale kategorie uspěje, pak LC_CTYPE
proměnné prostředí bude také být odpovídajícím způsobem nastavit v aktuální processenvironment než Python runtime je inicializován., To zajišťuje, že kromě toho, aby byl viděn i interpret sám a ostatní národní prostředí-awarecomponents běží ve stejném procesu (jako GNU readline
knihovna), aktualizované nastavení je také vidět v synovské procesy (bez ohledu na to, zda nebo ne ty procesy běží v Pythonu), stejně asin operace, které dotaz prostředí, spíše než aktuální locale(jako Python má vlastní locale.getdefaultlocale()
).,
Konfigurace jedné z těchto lokalit (buď explicitně, nebo prostřednictvím aboveimplicit locale nátlaku) automaticky umožňuje surrogateescape
error handler for sys.stdin
sys.stdout
(sys.stderr
nadále používat backslashreplace
stejně jako v jakékoli jiné národní prostředí). Toto chování při manipulaci s proudem lze přepsat pomocí PYTHONIOENCODING
jako obvykle.,
Pro účely ladění, nastavení PYTHONCOERCECLOCALE=warn
bude causePython vydávat varovné zprávy na stderr
pokud národní prostředí coercionactivates, nebo jiného, pokud národní prostředí, které by vyvolalo nátlak stále aktivní, když Python runtime je inicializován.
Také si všimněte, že i když národní prostředí nátlak je zakázán, nebo když to nedokáže najít vhodný cíl národní prostředí, PYTHONUTF8
bude stále aktivovat bydefault v legacy ASCII-based prostředí., Obě funkce musí být zakázána nezbytného platnost tlumočník použít ASCII
místo UTF-8
forsystem rozhraní.
dostupnost: * nix.
novinka ve verzi 3.7: viz PEP 538 pro více informací.
PYTHONDEVMODE
¶
Pokud je tato proměnná prostředí je nastavena na non-prázdný řetězec, enablePython vývojovém Režimu, kterým se stanoví dodatečné runtimechecks, že jsou příliš drahé, aby se ve výchozím nastavení povolena.
novinka ve verzi 3.7.,
PYTHONUTF8
¶
Pokud je nastaveno na 1
, umožňuje tlumočník je UTF-8 režimu, kde UTF-8
proto je-li použito jako text, kódování pro systém rozhraní, bez ohledu na aktuální národní prostředí.
To znamená, že:
sys.getfilesystemencoding()
výnosy'UTF-8'
(localeencoding je ignorována).
locale.getpreferredencoding()
výnosy'UTF-8'
(localeencoding je ignorována, a funkce jedo_setlocale
parametr má noeffect).,F-8 jako jejich kódování textu, ssurrogateescape
error handler je povoleno prosys.stdin
sys.stdout
(sys.stderr
nadále používatbackslashreplace
jako to dělá ve výchozím locale-aware režim)
v důsledku změn v ty nižší úrovni Api, jiné vysoké školy Api také vykazují odlišné výchozí chování:
argumenty Příkazového řádku, proměnné prostředí a názvy souborů jsou decodedto textu pomocí kódování UTF-8.,
os.fsdecode()
aos.fsencode()
použijte kódování UTF-8.
open()
io.open()
codecs.open()
použít UTF-8encoding ve výchozím nastavení. Nicméně, oni ještě používají přísné error handler bydefault tak, že se snaží otevřít binární soubor v textovém režimu je mohou vyvolat výjimku, spíše než produkovat nesmysly data.,
Všimněte si, že standardní proud nastavení v UTF-8 režim může být přepsána pomocíPYTHONIOENCODING
(stejně jako oni mohou být ve výchozím locale-awaremode).
Pokud je nastavena na0
, interpret běží ve výchozím režimu locale-aware.
nastavení jakéhokoli jiného neprázdného řetězce způsobuje chybu během tlumočení.,
Pokud tato proměnná není nastavena vůbec, pak tlumočník defaultsto pomocí aktuálního nastavení národního prostředí, pokud není aktuální národní prostředí isidentified jako dědictví ASCII-based prostředí(jak je popsáno na PYTHONCOERCECLOCALE
), a národní prostředí nátlaku iseither zdravotně postižené nebo selže. V takových starších lokalitách bude tlumočník upřednostňovat Povolení režimu UTF-8, pokud nebude výslovně poučen, aby tak neučinil.
k dispozici také jako -X
utf8
volba.
novinka ve verzi 3.7: další podrobnosti viz PEP 540.
1.2.1., Proměnné režimu ladění¶
nastavení těchto proměnných má vliv pouze na sestavení ladění Pythonu.
PYTHONTHREADDEBUG
¶
Pokud je nastaven, Python vytiskne informace o ladění závitů.
je třeba Python nakonfigurován s--with-pydebug
možnost sestavení.
PYTHONDUMPREFS
¶
Pokud je nastaven, Python vypíše objekty a referenční počty stále naživu po vypnutí tlumočníka.
je třeba Python nakonfigurován s--with-trace-refs
možnost sestavení.