C'è un modo per modificare la PATHvariabile 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.joinpuò essere utilizzato anche per ogni singolo percorso che devi aggiungere nel caso in cui devi costruirli da parti separate.
os.pathsepho citato (specifico per PATH)?
os.path.sep != os.pathsep.
Tieni presente che in os.environrealtà 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.popeno subprocess.Popendeve essere utilizzata dall'applicazione Python per lanciare altri processi. Altrimenti è praticamente inutile.
exportfa sì che una variabile venga copiata nell'ambiente di tutti i processi figli , ma non ha alcun effetto sul processo genitore.