这个话题有很多问题,但不幸的是他们没有解决我的问题。
我有一个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中的某些导出是嵌套的,mening:

export SOMETHING=$FOO/Bar

这可能会变得复杂,无法正确解析。
有没有其他的方法我还没有找到或没有想到?

最佳答案

一些选项:
https://github.com/mattseymour/python-env
https://github.com/rconradharris/envparse
Env变量源是非常常见的,我不建议你自己滚动。

关于python - 在python中设置环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33102516/

10-12 00:43
查看更多