os.getenv返回None而不是正确的值

Ale*_*lex 10 python linux environment-variables getenv

我有一个我无法发布的复杂软件,也没有具体的工作示例.我会尝试解释这个问题,也许有人曾经遇到过这个问题.

在Linux shell上我定义了一个环境变量:

> export MY_TEST_ENV=4711
> echo $MY_TEST_ENV
> 4711
Run Code Online (Sandbox Code Playgroud)

在复杂的代码中我想用这个变量获取

print os.getenv('MY_TEST_ENV')
Run Code Online (Sandbox Code Playgroud)

总是回来None.如果我创建一个测试脚本来测试这种行为,即使是不同文件中的类,我总是得到所需的行为,例如,os.getenv('MY_TEST_ENV')返回正确的值4711.

代码以sudo.开头.

任何想法可能是什么原因?

Jan*_*cke 9

很可能你调用Python进程的方式会让你失去环境.如果您在正在运行的shell中导出变量,并且在此之后直接在同一个shell中调用相关的Python进程,则此环境变量应该可用于此Python进程.为了帮助您调试此问题:而不是问题(print os.getenv('my...'))中的代码,通过打印整个环境print os.environ.从结果中,您应该能够推断出您的环境发生了什么.