os.getenv возвращает None вместо правильного значения
У меня есть сложное программное обеспечение, которое я не могу опубликовать, и у меня нет конкретного рабочего примера. Я постараюсь объяснить проблему, возможно, кто-то сталкивался с этим раньше.
В оболочке LINUX я определил переменную окружения:
> 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 ответ
Скорее всего, то, как вы вызываете процесс Python, приводит к потере среды. Если вы экспортируете переменную в работающей оболочке и сразу после этого вызываете рассматриваемый процесс Python в той же оболочке, эта переменная среды обязательно должна быть доступна этому процессу Python. Чтобы помочь вам отладить эту проблему: вместо рассматриваемого кода (print os.getenv('my...')
), распечатать всю среду через print os.environ
, По результатам вы сможете определить, что произошло с вашей средой.