我有一个我无法发布的复杂软件,也没有具体的工作示例。我会尝试解释这个问题,也许有人曾经遇到过这个问题。
在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
开头。
任何想法可能是什么原因?
答案 0 :(得分:7)
您调用Python进程的方式很可能会让您失去环境。如果您在正在运行的shell中导出变量,并且在此之后直接在同一个shell中调用相关的Python进程,则此环境变量应该可用于此Python进程。为帮助您调试此问题:而不是相关代码(print os.getenv('my...')
),请通过print os.environ
打印整个环境。从结果中,您应该能够推断出您的环境发生了什么。