Existe-t-il un moyen de modifier la PATH
variable d'environnement de manière indépendante de la plate-forme à l'aide de python?
Quelque chose de similaire à os.path.join()
?
Existe-t-il un moyen de modifier la PATH
variable d'environnement de manière indépendante de la plate-forme à l'aide de python?
Quelque chose de similaire à os.path.join()
?
Vous devriez pouvoir modifier os.environ
.
Puisqu'il os.pathsep
s'agit du caractère pour séparer différents chemins, vous devez l'utiliser pour ajouter chaque nouveau chemin:
os.environ["PATH"] += os.pathsep + path
ou, s'il y a plusieurs chemins à ajouter dans une liste:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
Comme vous l'avez mentionné, os.path.join
peut également être utilisé pour chaque chemin individuel que vous devez ajouter dans le cas où vous devez les construire à partir de pièces séparées.
os.pathsep
j'ai mentionné (spécifique à PATH)?os.path.sep != os.pathsep
.Veuillez noter qu'il
os.environ
ne s'agit pas en fait d'un dictionnaire. C'est un objet spécial semblable à un dictionnaire qui définit en fait les variables d'environnement dans le processus actuel en utilisant setenv .>>> os.environ.__class__ <class os._Environ at 0x100472050> >>> import os >>> os.environ["HELLO"] = "WORLD" >>> os.getenv("HELLO") 'WORLD'
Cela signifie que
PATH
(et d'autres variables d'environnement) seront visibles pour le code C exécuté dans le même processus.(Étant donné que les commentaires ne peuvent pas contenir de formatage, je dois le mettre dans une réponse, mais je pense que c'est un point important à souligner. C'est vraiment un commentaire sur le commentaire sur le fait qu'il n'y a pas d'équivalent à «exporter» .)
la source
La mise en garde à prendre en compte lors de la modification des variables d'environnement en Python, est qu'il n'y a pas d'équivalent de la commande shell "export". Il n'y a aucun moyen d'injecter des modifications dans le processus actuel, uniquement des processus enfants.
la source
os.system
,os.popen
ousubprocess.Popen
devraient ensuite être utilisées à partir de l'application Python pour lancer d'autres processus. Sinon, c'est à peu près inutile.export
entraîne la copie d'une variable dans l'environnement de tous les processus enfants , mais n'a aucun effet sur le processus parent.