Python 无法在 RHEL 中查看环境变量

Python 无法在 RHEL 中查看环境变量

以下代码environment variable was not found行在 Azure 中运行的 RHEL8 虚拟机中引发错误:

sourceKeys = os.environ.get("MY_ENV_VAR")

但是,当我们将 putty 放入虚拟机时,我们可以按如下方式访问该变量:

$ echo $MY_ENV_VAR
/path/to/some.yaml

该变量由打包程序在具有以下代码的启动脚本中设置:

export MY_ENV_VAR='/path/to/some.yaml'
echo "export MY_ENV_VAR='/path/to/some.yaml'" >> /etc/environment
echo "export MY_ENV_VAR='/path/to/some.yaml'" >> /etc/bashrc
echo "export MY_ENV_VAR='/path/to/some.yaml'" >> /etc/profile

为什么linux终端可以读取环境变量而python却不能?

为了让 python 程序能够读取环境变量的值,需要做哪些改变?

答案1

os.environ.get()只会检索环境变量 (env-var) 的值,可供进行检索的进程访问。如果您的进程是守护进程(如在由 启动的进程中systemd)或者与您发出的执行空间无关,$ echo $MY_ENV_VAR那么结果可能与您的预期不同。

简而言之,如果您要导出一个变量以使其全局可用,则需要从 shell 中导出它,该 shell 还会生成用于查询/检索所述环境变量的值的进程。

stackoverflow.com 和其他地方可以找到一些答案,例如这里

相关内容