2015-10-13 256 views
0

这个主题有很多问题,但不幸的是他们没有解决我的问题。在Python中设置环境变量

我有一个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和阅读的env在python输出,遍历列表,并写入os.environ。但是这种方法会再次写入每个变量,即使它已经被定义。如果有很多变数呢?

  • 我能想到的最后一个解决方案是读取并解析env.sh文件并设置我可以找到的变量。一个问题是,在一些env.sh出口嵌套,悲风:

    export SOMETHING=$FOO/Bar 
    

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

还有另一种方法,我还没有找到或没有想到?

+0

“python中的source env.sh” - 问题就在这里。为什么不在环境变量已经设置的时候执行python脚本? –

+0

我认为这将是一种安全措施,如果没有定义需要的环境变量,则不会退出程序。相反,我从文件中读取它们并在继续执行程序之前自行设置它们。这就是在shell脚本中完成的。 – ap0

+0

不要直接调用python脚本,使用包装器。 –

回答