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

时间:2012-09-11 10:10:51

标签: python linux environment-variables getenv

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

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

> export MY_TEST_ENV=4711
> echo $MY_TEST_ENV
> 4711

在复杂的代码中,我想用

获取这个变量
print os.getenv('MY_TEST_ENV')

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

代码以sudo开头。

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

1 个答案:

答案 0 :(得分:7)

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

相关问题