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