1.2. Variabili d’ambiente¶
Queste variabili d’ambiente influenzano il comportamento di Python, vengono elaborate prima che gli switch della riga di comando diversi da-E o-I. È consuetudine che gli switch della riga di comando sovrascrivano le variabili ambientali dove c’è un conflitto.
PYTHONHOME
¶
Modificare la posizione delle librerie Python standard., Per impostazione predefinita, le librerie vengono ricercate in prefix/lib/pythonversion
eexec_prefix/lib/pythonversion
, dove prefix
eexec_prefix
sono directory dipendenti dall’installazione, entrambe predefinite in /usr/local
.
Quando PYTHONHOME
è impostato su una singola directory, il suo valore sostituisce sia prefix
che exec_prefix
. Per specificare valori diversi, impostarePYTHONHOME
suprefix:exec_prefix
.
PYTHONPATH
¶
Aumenta il percorso di ricerca predefinito per i file del modulo., Il formato è lo stesso della shell PATH
: uno o più nomi di percorso di directory separati daos.pathsep
(ad esempio, due punti su Unix o punto e virgola su Windows).Le directory inesistenti vengono ignorate silenziosamente.
Oltre alle normali directory, le singole vociPYTHONPATH
possono fare riferimento a file zip contenenti moduli Python puri (in forma sorgente o compilata). I moduli di estensione non possono essere importati da file zip.,
Il percorso di ricerca predefinito dipende dall’installazione, ma generalmente inizia conprefix/lib/pythonversion
(vederePYTHONHOME
sopra). È sempre aggiunto a PYTHONPATH
.
Una directory aggiuntiva verrà inserita nel percorso di ricerca di fronte aPYTHONPATH
come descritto sopra Opzioni sottointerfaccia. Il percorso di ricerca può essere manipolato dall’interno di un programma Python come variabile sys.path
.
PYTHONPLATLIBDIR
¶
Se questa stringa è impostata su una stringa non vuota, sovrascrive il valoresys.platlibdir
.,
Nuovo nella versione 3.9.
PYTHONSTARTUP
¶
Se questo è il nome di un file leggibile, i comandi Python in quel file vengono eseguiti prima che il primo prompt venga visualizzato in modalità interattiva. Il fileis eseguito nello stesso spazio dei nomi in cui vengono eseguiti i comandi interattivi cosìgli oggetti definiti o importati in esso possono essere utilizzati senza qualificazione nella sessione interattiva. È inoltre possibile modificare i prompt sys.ps1
esys.ps2
e l’hooksys.__interactivehook__
in questo file.,
Genera un evento di controllocpython.run_startup
conil nome del file come argomento quando viene chiamato all’avvio.
PYTHONOPTIMIZE
¶
Se questa è impostata su una stringa non vuota, equivale a specificare l’opzione-O
. Se impostato su un numero intero, è equivalente a specificare-O
più volte.
PYTHONBREAKPOINT
¶
Se questo è impostato, assegna un nome chiamabile usando la notazione del percorso punteggiato., Il modulo contenente il callable verrà importato e quindi il callable verrà eseguito dall’implementazione predefinita di sys.breakpointhook()
che a sua volta viene chiamato dal built-in breakpoint()
. Se non impostato, o impostato su emptystring, è equivalente al valore ” pdb.set_traccia”. Impostando questo su “0”, l’implementazione predefinita di sys.breakpointhook()
non fa altro che tornare immediatamente.
Nuovo nella versione 3.7.,
PYTHONDEBUG
¶
Se questa è impostata su una stringa non vuota, equivale a specificare l’opzione-d
. Se impostato su un numero intero, è equivalente a specificare-d
più volte.
PYTHONOLDPARSER
¶
Se questa è impostata su una stringa non vuota, abilitare il parser LL(1) tradizionale.
Vedere anche l’opzione -X
oldparser
e PEP 617.
Deprecato dalla versione 3.9, verrà rimosso nella versione 3.10.,
PYTHONINSPECT
¶
Se questa è impostata su una stringa non vuota, equivale a specificare l’opzione-i
.
Questa variabile può anche essere modificata dal codice Python usando os.environ
per forzare la modalità di ispezione alla fine del programma.
PYTHONUNBUFFERED
¶
Se questa è impostata su una stringa non vuota, equivale a specificare l’opzione-u
.
PYTHONVERBOSE
¶
Se questa è impostata su una stringa non vuota, equivale a specificare l’opzione-v
., Se impostato su un numero intero, è equivalente a specificare-v
più volte.
PYTHONCASEOK
¶
Se questo è impostato, Python ignora il caso nelle istruzioni import
. Thisonly funziona su Windows e OS X.
PYTHONDONTWRITEBYTECODE
¶
Se questo è impostato su una stringa non vuota, Python non proverà a scrivere .pyc
file sull’importazione di moduli di origine. Questo è equivalente a specificare l’opzione-B
.,
PYTHONPYCACHEPREFIX
¶
Se questo è impostato, Python scriverà .pyc
file in una directory mirror treeat questo percorso, invece che in __pycache__
directory all’interno del sourcetree. Ciò equivale a specificare l’opzione-X
pycache_prefix=PATH
.
Nuovo nella versione 3.8.
PYTHONHASHSEED
¶
Se questa variabile non è impostata o impostata surandom
, viene utilizzato un valore casuale per seminare gli hash degli oggetti str e bytes.,
Se PYTHONHASHSEED
è impostato su un valore intero, viene utilizzato come fixedseed per generare l’hash() dei tipi coperti da hashrandomization.
Il suo scopo è quello di consentire l’hashing ripetibile, ad esempio per i selftest per l’interprete stesso, o per consentire a un cluster di processi Python di condividere hashvalues.
Il numero intero deve essere un numero decimale nell’intervallo . Specificando il valore 0 si disabilita la randomizzazione hash.
Nuovo nella versione 3.2.3.,
PYTHONIOENCODING
¶
Se questo è impostato prima di eseguire l’interprete, sovrascrive la codifica utilizzata per stdin/stdout / stderr, nella sintassiencodingname:errorhandler
. Entrambe le parti encodingname
e :errorhandler
sono opzionali e hanno lo stesso significato di str.encode()
.
Per stderr, la parte:errorhandler
viene ignorata; il gestore sarà sempre'backslashreplace'
.
Modificato nella versione 3.4: la parte encodingname
è ora opzionale.
Cambiato nella versione 3.,6: In Windows, la codifica specificata da questa variabile viene ignorata per i buffer interactiveconsole a meno che non venga specificato anche PYTHONLEGACYWINDOWSSTDIO
.I file e le pipe reindirizzati attraverso i flussi standard non sono interessati.
PYTHONNOUSERSITE
¶
Se questo è impostato, Python non aggiungerà il user site-packages directory
a sys.path
.,
si Veda anche
PEP 370 – Per ogni utente del sito di directory dei pacchetti
PYTHONUSERBASE
¶
Definisce il user base directory
che viene utilizzato tocompute il percorso del user site-packages directory
e Distutils percorsi di installazione dipython setup.py install --user
.
Vedi anche
PEP 370 – Per user site-packages directory
PYTHONEXECUTABLE
¶
Se questa variabile d’ambiente è impostata, sys.argv
verrà impostata su itsvalue invece del valore ottenuto attraverso il runtime C. Funziona solo su Mac OS X.,
PYTHONWARNINGS
¶
Questo è equivalente all’opzione-W
. Se impostato su una stringa separata da virgole, equivale a specificare-W
multipletimes, con i filtri successivi nell’elenco che hanno la precedenza su quelli precedenti nell’elenco.
Le impostazioni più semplici applicano una particolare azione incondizionatamente a tutti gli avvisi emessi da un processo (anche quelli che sono altrimenti ignorati da default):
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
Vedere il filtro Avvisi e la descrizione dei filtri di avviso per ulteriori dettagli.,
PYTHONFAULTHANDLER
¶
Se questa variabile è impostata su una stringa non vuota,faulthandler.enable()
è chiamato all’avvio: installare un gestore perSIGSEGV
SIGFPE
SIGABRT
SIGBUS
eSIGILL
segnali per eseguire il dump del Python traceback. Questo è equivalente all’opzione-X
faulthandler
.
Nuovo nella versione 3.3.,
PYTHONTRACEMALLOC
¶
Se questa variabile di ambiente è impostata su una stringa non vuota, avviare tracingPython allocazioni di memoria utilizzando il modulotracemalloc
. Il valore della variabile è il numero massimo di fotogrammi memorizzati in un traceback di atrace. Ad esempio,PYTHONTRACEMALLOC=1
memorizza solo il frame più recente. Vedere tracemalloc.start()
per ulteriori informazioni.
Nuovo nella versione 3.4.
PYTHONPROFILEIMPORTTIME
¶
Se questa variabile d’ambiente è impostata su una stringa non vuota, Python mostrerà quanto tempo impiega ogni importazione., Questo è esattamente equivalente all’impostazione -X importtime
sulla riga di comando.
Nuovo nella versione 3.7.
PYTHONASYNCIODEBUG
¶
Se questa variabile d’ambiente è impostata su una stringa non vuota, abilitare la modalità dbug del moduloasyncio
.
Nuovo nella versione 3.4.
PYTHONMALLOC
¶
Impostare gli allocatori di memoria Python e / o installare gli hook di debug.,
Imposta la famiglia di allocatori di memoria utilizzati da Python:
Installa i ganci di debug:
-
debug
: installa i ganci di debug sopra gli allocatori di memoria predefiniti. -
malloc_debug
: comemalloc
ma installa anche i ganci di debug. -
pymalloc_debug
: comepymalloc
ma installa anche i ganci di debug.
Vedere gli allocatori di memoria predefiniti e la funzione PyMem_SetupDebugHooks()
(installare i ganci di debug sugli allocatori Pythonmemory).
Cambiato nella versione 3.,7: Aggiunto l’allocatore"default"
.
Nuovo nella versione 3.6.
PYTHONMALLOCSTATS
¶
Se impostato su una stringa non vuota, Python stamperà le statistiche dell’allocatore di memoria pymalloc ogni volta che viene creata una nuova objectarena pymalloc e all’arresto.
Questa variabile viene ignorata se il PYTHONMALLOC
ambiente variableis utilizzato per forzare il malloc()
allocatore della libreria C, o ifPython è configurato senza pymalloc
supporto.
Cambiato nella versione 3.,6: Questa variabile può ora essere utilizzata anche su Python compilato nella versione mode.It ora non ha alcun effetto se impostato su una stringa vuota.
PYTHONLEGACYWINDOWSFSENCODING
¶
Se impostato su una stringa non vuota, la codifica del filesystem e la modalità errori di default ritorneranno ai valori precedenti alla 3.6 di ‘mbcs’ e ‘replace’, rispettivamente.In caso contrario, vengono utilizzati i nuovi valori predefiniti ‘utf-8’ e ‘surrogatepass’.
Questo può anche essere abilitato in fase di runtime consys._enablelegacywindowsfsencoding()
.
Disponibilità: Finestre.
Novità nella versione 3.6: vedere PEP 529 per maggiori dettagli.,
PYTHONLEGACYWINDOWSSTDIO
¶
Se impostato su una stringa non vuota, non utilizza la nuova console reader andwriter. Ciò significa che i caratteri Unicode saranno codificati in base ala pagina di codice della console attiva, piuttosto che utilizzare utf-8.
Questa variabile viene ignorata se i flussi standard vengono reindirizzati (a filesor pipe) piuttosto che fare riferimento ai buffer della console.
Disponibilità: Finestre.
Nuovo nella versione 3.6.,
PYTHONCOERCECLOCALE
¶
Se impostato sul valore0
, fa sì che l’applicazione principale della riga di comando Python salti forzando le impostazioni locali C e POSIX basate su ASCII legacy a un’alternativa basata su UTF-8 più capable.,altro esplicitamente basata su ASCII POSIX
locale, quindi thePython CLI tenterà di configurare le seguenti impostazioni internazionali per ilLC_CTYPE
categoria nell’ordine elencato prima del caricamento del interpreterruntime:
-
C.UTF-8
-
C.utf8
-
UTF-8
Se l’impostazione di uno di questi le categorie di locale riesce, quindi il LC_CTYPE
variabile di ambiente sarà anche impostare di conseguenza la corrente processenvironment prima di Python runtime viene inizializzato., Questo assicura che inaddition per essere visto da entrambi lo stesso interprete e un altro locale-awarecomponents in esecuzione nello stesso processo (come GNU readline
libreria), l’impostazione aggiornata è visto anche in sottoprocessi (a prescindere dal ofwhether tali processi sono in esecuzione un interprete Python), così asin operazioni di query per l’ambiente, piuttosto che l’attuale locale C(Python proprio locale.getdefaultlocale()
).,
la Configurazione di uno di questi locali (esplicitamente o attraverso il aboveimplicit locale coercizione) abilita automaticamente il surrogateescape
gestore di errore per sys.stdin
esys.stdout
(sys.stderr
continua a usare backslashreplace
come si fa in qualsiasi altro locale). Questo comportamento di gestione del flusso può essere modificato utilizzando PYTHONIOENCODING
come al solito.,
Per scopi di debug, l’impostazione diPYTHONCOERCECLOCALE=warn
causerà l’emissione di messaggi di avviso sustderr
se la coercizione locale si attiva, oppure se una locale che avrebbe attivato la coercizione è ancora attiva quando il runtime Python viene inizializzato.
Si noti inoltre che anche quando la coercizione locale è disabilitata o quando non riesce a trovare una locale di destinazione adatta,PYTHONUTF8
attiverà comunque bydefault nelle impostazioni locali basate su ASCII legacy., Entrambe le funzionalità devono essere disabilitate per forzare l’interprete a utilizzare ASCII
invece di UTF-8
per le interfacce di sistema.
Disponibilità: * nix.
Novità nella versione 3.7: vedere PEP 538 per maggiori dettagli.
PYTHONDEVMODE
¶
Se questa variabile di ambiente è impostata su una stringa non vuota, enablePython Modalità di sviluppo, introducendo ulteriori runtimechecks che sono troppo costosi per essere abilitati per impostazione predefinita.
Nuovo nella versione 3.7.,
PYTHONUTF8
¶
Se impostato su1
, abilita la modalità UTF-8 dell’interprete, doveUTF-8
viene utilizzata come codifica del testo per le interfacce di sistema, indipendentemente dall’impostazione locale corrente.
Ciò significa che:
sys.getfilesystemencoding()
restituisce'UTF-8'
(la codifica locale viene ignorata).
locale.getpreferredencoding()
restituisce'UTF-8'
(la codifica locale viene ignorata e il parametrodo_setlocale
della funzione non ha effetto).,F-8 come loro codifica del testo, con ilsurrogateescape
gestore di errore in fase di abilitazione persys.stdin
esys.stdout
(sys.stderr
continua a usarebackslashreplace
come si fa nelle impostazioni internazionali predefinite-conoscenza modalità)
Come conseguenza dei cambiamenti in quelli di livello inferiore Api, altri posizione di livello superiore anche le Api hanno diversi comportamenti di default:
argomenti della riga di Comando, le variabili di ambiente e nomi dei file sono decodedto testo utilizzando la codifica UTF-8.,
os.fsdecode()
eos.fsencode()
utilizzare la codifica UTF-8.
open()
,io.open()
ecodecs.open()
utilizzare la codifica UTF-8 per impostazione predefinita. Tuttavia, usano ancora il gestore di errori rigoroso bydefault in modo che il tentativo di aprire un file binario in modalità testo possa sollevare un’eccezione piuttosto che produrre dati senza senso.,
Si noti che le impostazioni di flusso standard in modalità UTF-8 possono essere sovrascritte da PYTHONIOENCODING
(proprio come possono essere nella modalità locale predefinita-awaremode).
Se impostato su 0
, l’interprete viene eseguito nella modalità predefinita di localizzazione.
L’impostazione di qualsiasi altra stringa non vuota causa un errore durante l’interpreterinitialisation.,
Se questa variabile d’ambiente non è affatto impostata, l’interprete deve utilizzare le impostazioni locali correnti, a meno che la locale corrente non sia identificata come locale basato su ASCII legacy(come descritto per PYTHONCOERCECLOCALE
) e la coercizione locale sia disabilitata o non riesca. In tali locali legacy, l’interprete saràdefinito all’abilitazione della modalità UTF-8 a meno che non sia esplicitamente richiesto di non farlo.
Disponibile anche come opzione-X
utf8
.
Novità nella versione 3.7: vedere PEP 540 per maggiori dettagli.
1.2.1., Variabili in modalità debug¶
L’impostazione di queste variabili ha effetto solo in una build di debug di Python.
PYTHONTHREADDEBUG
¶
Se impostato, Python stamperà le informazioni di debug del threading.
Hai bisogno di Python configurato con l’opzione di compilazione--with-pydebug
.
PYTHONDUMPREFS
¶
Se impostato, Python scaricherà oggetti e conteggi di riferimento ancora vivi dopo aver tagliato l’interprete.
Hai bisogno di Python configurato con l’opzione di compilazione--with-trace-refs
.