在python中设置环境变量

时间:2015-10-13 12:17:50

标签: python linux bash

这个话题有很多问题但不幸的是他们并没有解决我的问题。

我有一个shell脚本,其目的只是设置环境变量(让我们称之为env.sh)。第二个shell脚本是源程序脚本env.sh,它使用在那里定义的变量。当两者都是bash脚本时,这样可以正常工作。

我遇到的问题是我尝试用python程序替换主shell脚本。这个python程序还依赖于env.sh设置的那些环境变量。

在启动任何使用这些环境变量的例程之前,如何在python中获取env.sh

  • 我必须使用模块子进程运行bash -c source env.sh。但是,如果我理解正确,这不起作用,因为变量是在调用python程序的子进程中设置的,因此在父进程中不可用。这是对的吗?

  • 类似的解决方案是使用bash -c source env.sh && env并在python中读取env的输出,遍历列表并写入os.environ。但是这种方法会再次写入每个变量,即使它已经被定义了。如果有很多变量怎么办?

  • 我能想到的最后一个解决方案是读取并解析env.sh文件并设置我能找到的变量。一个问题是env.sh中的某些导出是嵌套的,修改:

    export SOMETHING=$FOO/Bar
    

    正确解析可能会变得很复杂。

还有其他方式我还没有发现或没有想到吗?

1 个答案:

答案 0 :(得分:0)

一些选项:

  1. https://github.com/mattseymour/python-env
  2. https://github.com/rconradharris/envparse
  3. Env变量采购很常见,我不建议你自己动手。