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