Ho un software complesso che non riesco a pubblicare, né ho un esempio concreto di lavoro. Proverò a spiegare il problema, forse qualcuno l'ha già incontrato prima.restituisce os.getenv Nessuno valore invece corretto
Sulla shell di Linux ho definito una variabile di ambiente:
> export MY_TEST_ENV=4711
> echo $MY_TEST_ENV
> 4711
All'interno del codice complesso che voglio ottenere questa variabile con
print os.getenv('MY_TEST_ENV')
che restituisce sempre None
. Se creo uno script di test per verificare questo comportamento, anche con le classi in file diversi, ottengo sempre il comportamento desiderato (ad esempio, os.getenv('MY_TEST_ENV')
restituisce il valore corretto 4711
).
Il codice viene avviato come 'sudo'.
Qualche idea quale potrebbe essere la ragione?
Come si esegue questo "codice complesso"? – geoffspear
Le restanti variabili d'ambiente sono ancora lì? Come viene avviato il processo Python? Se si avvia un processo con la chiamata di sistema 'execve' e si fa _non_ compilare la variabile di ambiente, l'ambiente del bambino viene azzerato. – alexis
Sapevo che la soluzione al mio problema è banale, perché eseguo il processo Python come sudo! Ma non ho visto questa soluzione finché non mi è stato chiesto o come eseguire il codice. Senza sudo, vedo la variabile (ma il resto del codice non funzionerà, però). – Alex