¿Hay alguna forma de modificar la variable de entorno PATH
de forma independiente de la plataforma mediante python?Python: forma independiente de la plataforma para modificar la variable de entorno PATH
¿Algo similar a os.path.join()
?
¿Hay alguna forma de modificar la variable de entorno PATH
de forma independiente de la plataforma mediante python?Python: forma independiente de la plataforma para modificar la variable de entorno PATH
¿Algo similar a os.path.join()
?
Debería poder modificar os.environ
.
Desde os.pathsep
es el carácter para separar los diferentes caminos, usted debe usar esto para añadir cada nuevo camino:
os.environ["PATH"] += os.pathsep + path
o, si hay varios caminos para añadir en una lista:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Como mencionaste, os.path.join
también se puede usar para cada ruta individual que debes adjuntar en caso de que tengas que construirlas desde partes separadas.
La advertencia a tener en cuenta al modificar las variables de entorno en Python, es que no hay un equivalente del comando de shell "exportar". No hay forma de inyectar cambios en el proceso actual, solo procesos secundarios.
+1: Es sensato señalarlo, los comandos como 'os.system',' os.popen' o 'subprocess.Popen' se deben usar desde la aplicación Python para iniciar otros procesos. De lo contrario, no tiene sentido. – RedGlyph
Esto no es verdad. – Glyph
Aclaración de la declaración de Glyph: esto no es cierto porque los cambios * se * inyectan en el proceso actual (que es el proceso de python). OP probablemente significó que no hay forma de inyectar cambios en el proceso padre (que normalmente es un shell del que se ejecutó el script python). – PonyEars
Tenga en cuenta que os.environ
no es en realidad un diccionario. Es un diccionario especial - como el objeto que en realidad establece variables de entorno en el proceso actual usando setenv.
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
Esto significa que PATH
(y otras variables de entorno) se ser visible para ejecutar código C en el mismo proceso.
(Dado que los comentarios no pueden contener un formato, tengo que poner esto en una respuesta, pero me siento como que es un punto importante para hacer. Esto es realmente un comentario sobre the comment about there being no equivalent to 'export'.)
Lo que con separadores de ambiente PATH ? ? linux -/usr/bin:/lib: ":" windows - C: \ asdf \; C: \ Prog ...; ";" – bua
@bua: ¿te refieres al 'os.pathsep' que mencioné (específico de PATH)? – RedGlyph
Gracias, eso es lo que estaba buscando. – resi