如何在python中执行os.environ加入?

Duc*_*een 7 python environment-variables python-2.7

我有一个os.environ默认值的配置(覆盖我90%的需求).我有一个特殊的应用程序框架包,例如调用SALOME,它不提供软件包安装到系统环境中并尝试自包含,它还需要使用依赖于环境变量的特殊旧技术 sys.pathPYTHONPATH不是唯一的东西它需要.当它开始os.environ在它创建的环境中调用时,我可以获得它需要的所有变量.然后,我可以序列化该os.environ字典.

我想知道如何os.environ在我目前正在运行的系统上应用一个我通过序列化获得的合并?

cht*_*mon 6

让我们假设您已经完成了类似以下的操作来序列化环境:

import json
import os

with open('environ.json', 'w') as f:
    json.dump(dict(**os.environ), f)
Run Code Online (Sandbox Code Playgroud)

您现在可以像这样阅读那些(在另一个程序中)

import json
import os

with open('environ.json', 'r') as f:
    os.environ.update(json.load(f))
Run Code Online (Sandbox Code Playgroud)

这只会添加或更改当前环境变量以匹配保存的变量,但任何其他变量都将保留.

如果您只想通过添加特定变量来更新它们(例如添加额外路径),您可以明确地执行此操作:

with open('environ.json', 'r') as f:
    loadedenv = json.load(f)

pathvars = ['PATH', 'PYTHONPATH']

for p in pathvars:
    os.environ[p] += ':' + loadedenv[p]
Run Code Online (Sandbox Code Playgroud)