14

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

在 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.

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

4

1 回答 1

12

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

于 2012-09-11T10:41:12.290 回答