C'è un modo per modificare la PATH
variabile d'ambiente in modo indipendente dalla piattaforma usando python?
Qualcosa di simile a os.path.join()
?
Risposte:
Dovresti essere in grado di modificare os.environ
.
Poiché os.pathsep
è il carattere a separare percorsi diversi, dovresti usarlo per aggiungere ogni nuovo percorso:
os.environ["PATH"] += os.pathsep + path
oppure, se sono presenti più percorsi da aggiungere in un elenco:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Come hai detto, os.path.join
può essere utilizzato anche per ogni singolo percorso che devi aggiungere nel caso in cui devi costruirli da parti separate.
os.pathsep
ho citato (specifico per PATH)?
os.path.sep != os.pathsep
.
Tieni presente che in os.environ
realtà non è un dizionario. È uno speciale oggetto simile a un dizionario che imposta effettivamente le variabili di ambiente nel processo corrente utilizzando setenv .
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
Ciò significa che PATH
(e altre variabili di ambiente) saranno visibili al codice C eseguito nello stesso processo.
(Dal momento che i commenti non possono contenere la formattazione, devo metterlo in una risposta, ma sento che è un punto importante da sottolineare. Questo è davvero un commento sul commento sul fatto che non esiste alcun equivalente a "export" .)
L'avvertenza da tenere presente quando si modificano le variabili di ambiente in Python è che non esiste un equivalente del comando di shell "export". Non è possibile inserire modifiche nel processo corrente, solo processi figlio.
os.system
, os.popen
o subprocess.Popen
deve essere utilizzata dall'applicazione Python per lanciare altri processi. Altrimenti è praticamente inutile.
export
fa sì che una variabile venga copiata nell'ambiente di tutti i processi figli , ma non ha alcun effetto sul processo genitore.