C'è un modo per modificare la variabile di ambiente PATH
in modo indipendente dalla piattaforma utilizzando python?Python: modo indipendente dalla piattaforma per modificare la variabile di ambiente PATH
Qualcosa di simile a os.path.join()
?
C'è un modo per modificare la variabile di ambiente PATH
in modo indipendente dalla piattaforma utilizzando python?Python: modo indipendente dalla piattaforma per modificare la variabile di ambiente PATH
Qualcosa di simile a os.path.join()
?
Dovresti essere in grado di modificare os.environ
.
Dal os.pathsep
è il carattere per separare percorsi diversi, è necessario utilizzare questo per aggiungere ogni nuovo percorso:
os.environ["PATH"] += os.pathsep + path
o, se ci sono diversi percorsi per aggiungere in un elenco:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Come già accennato, è possibile utilizzare os.path.join
per ogni singolo percorso da aggiungere nel caso in cui sia necessario costruirli da parti separate.
L'avvertenza da prendere in considerazione con la modifica delle variabili di ambiente in Python, è che non esiste un equivalente del comando di shell "export". Non c'è modo di iniettare modifiche nel processo corrente, solo i processi figli.
+1: è opportuno indicarlo, comandi come 'os.system',' os.popen' o 'subprocess.Popen' devono quindi essere utilizzati dall'applicazione Python per avviare altri processi. Altrimenti è praticamente inutile. – RedGlyph
Questo non è vero. – Glyph
Chiarimento dell'istruzione di Glyph: questo non è vero perché le modifiche * sono * iniettate nel processo corrente (che è il processo python). Probabilmente OP significava che non c'era modo di iniettare modifiche nel processo genitore (che di solito è una shell da cui è stato eseguito lo script python). – PonyEars
Si prega di notare che os.environ
non è in realtà un dizionario. È un dizionario speciale - come l'oggetto 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
(o qualche altra variabile) sarà visibili per eseguire codice C nello stesso processo.
(Dal momento che i commenti non possono contenere la formattazione, devo mettere questo in una risposta, ma mi sento come se fosse un punto importante da fare. Questo è veramente un commento su the comment about there being no equivalent to 'export'.)
Che con separatori d'ambiente PATH ? ? linux -/usr/bin:/lib: ":" windows - C: \ asdf \; C: \ Prog ...; ";" – bua
@bua: intendi il 'os.pathsep' di cui ho parlato (specifico per PATH)? – RedGlyph
Grazie, questo è quello che stavo cercando. – resi