В каких случаях os.environ['foo'] не соответствует os.getenv('foo')?

У меня есть небольшое приложение Python, запущенное через subprocess.Popen, которое принимает некоторые параметры в виде переменных среды. Я делаю это, передавая структуру окружения в вызов Popen. Затем программа считывает переменные через os.getenv.

Вернее, раньше так их читали. В Windows все работало нормально. Но на наших серверах FreeBSD os.getenvвозвращает Noneдля всех параметров, которые мы передали. Странно то, что os.environимеет значения просто отлично — и, действительно, простое переключение всех вызовов os.getenv('foo')на os.environ['foo']заставило все отлично работать на обоих] платформы.

Почему эти значения различаются? Когда одно лучше другого?

34
задан Benjamin Pollack 8 June 2012 в 16:17
поделиться