【发布时间】:2023-02-04 04:19:27
【问题描述】:
我有一个很长的 bash 脚本,最后导出一个环境变量,我们称之为myscript.sh. 我需要从 python 代码调用这个 shell 脚本。据我所知,导出的环境变量将是本地的,在 python 中是不可见的。
是否有适当的方法使其也可以在 python 环境中导出?
【问题讨论】:
-
您可以在 shell 脚本末尾运行 env 命令。我看不出有其他方法可以做到这一点。环境变量被传递给子进程,但是您的 Python 脚本是 bash 脚本的父进程,并且环境变量不会从子进程流向父进程。
-
所以换句话说,运行你的 shell 脚本,然后你的 Python 脚本。或者,用 Python 重新实现 shell 的所有(或至少主要部分)。或者,如果可以的话,用一些东西改变或包装 shell 脚本,将其结果变成你可以在 Python 中使用
exec或ast.literal_eval的东西。 -
绝望的方法是
source ./myscript.sh && python ./otherscript.py,但我不会亲自这样做,除非我将该行放在我的 .bashrc 或 .profile 或诸如此类的东西中。 -
在
myscript.sh的末尾,将myvar=some value写入一个临时文件并在 python 中读取该临时文件。接下来 Python 可以设置变量。