以下代码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 和其他地方可以找到一些答案,例如这里。