通过python中的调用脚本访问导出的变量

时间:2018-09-22 08:29:19

标签: python environment-variables

虽然在python中有很多关于访问/设置环境变量的问题,但我找不到适合我的特定情况的答案。

我有一个shell脚本,当调用它时,它会导出一堆env变量,这些变量将在以后使用。

如果您需要当前会​​话中的这些变量可用,那么您就可以这样做

. ./script_exp_var.sh

可以,

export MYVAR = MYVAL

然后,如果您运行python,则可以使用os.environ.get('MYVAR')访问它。

我的问题是如何从python调用脚本,然后必须访问调用刚刚导出的脚本的env变量。可能吗?如果可以,怎么办? 注意:我知道我可以使用os.environ["MYVAR"] = MYVAL从python设置env var,但是我想在我的./script_exp_var.sh中使用现有的逻辑,因为它会导出许多变量。 另外,对于我的情况,也不要确保先执行脚本然后执行python。

1 个答案:

答案 0 :(得分:1)

不能。环境变量是从父级复制到子级的,永远不会复制回父级。

如果您从python执行shell脚本,则将在该shell进程(子进程)中设置环境变量,而python将不会意识到这些变量。

可以编写一个解析器,以从python读取shell命令,但这需要大量工作。

最好编写一个带有其中设置的shell脚本,然后将python程序作为该脚本的子代来调用。

或者,编写一个shell脚本,将这些值回显到python,可以使用管道将其拾取。