Come policy predefinita (NdT: politica di condotta), l'interprete Python non esegue del codice proprio dell'utente all'avvio di programmi Python. (Solo le sessioni interattive eseguono lo script specificato dalla variabile d'ambiente PYTHONSTARTUP, se esiste).
Comunque, su alcuni programmi o implementazioni specifiche della piattaforma può essere utile consentire agli utenti di avere un file standard di personalizzazione, che si possa avviare qualora un programma lo richieda. Questo modulo implementa tale meccanismo. Un programma che si desidera usi il meccanismo, deve eseguire l'istruzione:
import user
Il modulo user cerca un file .pythonrc.py nella directory personale dell'utente e se questo può venire aperto, lo esegue (usando execfile()) nel suo (il modulo user) spazio dei nomi globale. Errori durante questa fase non vengono gestiti; sta al programma che importa il modulo user farlo, se lo si desidera. Si assume che la directory personale venga indicata dalla variabile d'ambiente HOME; se questa non è stata impostata, viene utilizzata la directory corrente.
Il file utente .pythonrc.py può concretamente testare
sys.version
se si desidera fare diverse cose in funzione della
versione di Python in uso.
Un avviso agli utenti: siate molto conservativi sul luogo in cui metterete il vostro file .pythonrc.py. Poiché non si conoscoscono a priori i programmi che lo utilizzerano, non è generalmente una buona idea cambiare il comportamento dei moduli standard e delle funzioni.
Un suggerimento per i programmatori che desiderano utilizzare questo
meccanismo: un metodo semplice per lasciare agli utenti la possibilità
di specificare opzioni per il vostro package è quello di definire
delle variabili nel loro .pythonrc.py, testate nel vostro
modulo. Per esempio, un modulo spam, che possiede un alto
livello di dettaglio, può cercare una variabile
user.spam_verbose
, come segue:
import user verbose = bool(getattr(user, ``spam_verbose'', 0))
La forma in tre argomenti della funzione getattr() viene
usata nel caso in cui l'utente non abbia definito spam_verbose
nel proprio file .pythonrc.py.
Per programmi con personalizzazioni pesanti, è meglio implementare la lettura di un file di personalizzazione specifico.
Programmi utilizzati in ambiti di sicurezza o di privacy non dovrebbero importare questo modulo; un utente può facilmente introdursi nel programma piazzando del codice arbitrario nel file .pythonrc.py.
Moduli per uso generale non dovrebbero importare questo modulo; potrebbe interferire con l'operazione di import del programma.
Vedete anche: