web-dev-qa-db-fra.com

Python: moyen indépendant de la plate-forme de modifier la variable d'environnement PATH

Existe-t-il un moyen de modifier la variable d'environnement PATH d'une manière indépendante de la plateforme en utilisant python?

Quelque chose de similaire à os.path.join()?

77
resi

Vous devriez pouvoir modifier os.environ.

Puisque os.pathsep est le caractère pour séparer les 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 parties distinctes.

149
RedGlyph

Veuillez noter que os.environ n'est pas réellement un dictionnaire. C'est un dictionnaire spécial - comme objet qui définit réellement les variables d'environnement dans le processus en cours 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 par le code C exécuté dans le même processus.

(Comme les commentaires ne peuvent pas contenir de mise en forme, je dois mettre cela dans une réponse, mais je pense que c'est un point important à faire. C'est vraiment un commentaire sur le commentaire selon lequel il n'y a pas d'équivalent à `` exporter '' .)

17
Glyph

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 changements dans le processus actuel, seulement des processus enfants.

6
Matt T