python - 通过从 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 也不是我的方案的选项。
解决方案
你不能。环境变量从父级复制到子级,永远不会回到父级。
如果您从 python 执行 shell 脚本,则环境变量将在该 shell 进程(子进程)中设置,python 将不知道它们。
您可以编写一个解析器来从 python 读取 shell 命令,但这需要大量工作。
最好使用其中的设置编写一个 shell 脚本,然后将 python 程序作为脚本的子程序调用。
或者,编写一个将值回显到 python 的 shell 脚本,可以使用管道获取该值。
推荐阅读
- reactjs - 有什么方法可以使用带有文本字段的多选下拉菜单,例如使用 react material-ui 在附加图像中?
- javascript - 用于获取字符串长度的 unescape 函数的替代方法
- python - 如何像常规模板一样使用 base.html 并呈现给它
- apache-superset - Auth0 与 Apache Superset 的集成:错误登录无效。请再试一次
- angular - 如何将 *ngFor 与我从服务中获得的列表一起使用?
- sql - 选择 50% 的行。在列中的文本之间均匀分割
- javascript - 未根据用户类型显示正确的反应组件
- x86 - 如何使用 Rocket Lake 通过 perf 访问 RAPL?
- anaconda - 更新后anaconda spyder无法打开
- windows-services - 使用来自 Windows 服务的 OpenID 连接通过 API 进行身份验证