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, По результатам вы сможете определить, что произошло с вашей средой.

Другие вопросы по тегам