【发布时间】:2016-03-26 04:40:16
【问题描述】:
我有一个带有默认值的 os.environ 配置(覆盖了我 90% 的需求)。我有一个特殊的应用程序框架包,例如称为SALOME,它不提供包安装到系统环境中并试图自包含,它还需要使用依赖环境变量的特殊旧技术,因此sys.path和PYTHONPATH 并不是它唯一需要的东西。当它开始在它创建的环境中调用os.environ 时,我可以获得它需要的所有变量。然后我可以序列化那个os.environ 字典。
我想知道如何将我当前运行的系统上的os.environ 与我通过序列化获得的合并应用?
【问题讨论】:
-
你的意思是像
os.environ.update(deserialized_environment)? -
@mqilson:是的,类似的。没有删除 - 只是插入和添加。
-
@DuckQueen 以及为什么 mgilson 的解决方案对您不起作用?
os.environ是一个 dict,另一个对象是 dict,dict.update就像你解释的那样工作 - dict 数据将被来自update()参数的数据覆盖。不冲突的键将保持不变。 -
是什么阻止了您在实际启动应用程序之前使用批处理或 shell 作为包装器来简单地将所需的值添加到环境中?
-
@Rogalski
os.environ不是dict。这是一个os._Environ实例。它提供了一个dict接口,但是当您设置值等时,它实际上会改变与流程相关联的真实环境。
标签: python python-2.7 environment-variables