首页 > 解决方案 > 通过从 python 调用的脚本访问导出的变量

问题描述

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

我有一个 shell 脚本,当调用它时,它会导出一组稍后使用的 env 变量。

当您需要从当前会话中获得这些变量时,您会这样做

. ./script_exp_var.sh

确实如此,说

export MYVAR = MYVAL

那么如果你运行 python,你可以使用os.environ.get('MYVAR').

我的问题是如何从 python 调用脚本,然后必须访问调用脚本刚刚导出的环境变量。有可能吗?如果有,怎么做?注意:我知道我可以使用 python 设置环境变量os.environ["MYVAR"] = MYVAL,但我想使用我的现有逻辑,./script_exp_var.sh因为它导出了许多变量。另外确保先执行脚本然后执行 python 也不是我的方案的选项。

标签: pythonenvironment-variables

解决方案


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

如果您从 python 执行 shell 脚本,则环境变量将在该 shell 进程(子进程)中设置,python 将不知道它们。

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

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

或者,编写一个将值回显到 python 的 shell 脚本,可以使用管道获取该值。


推荐阅读