Переменные среды сохраняются в скрипте Python даже после выхода - PullRequest
2 голосов
/ 09 марта 2012

Я использую свой Test Harness, написанный на Python. Перед запуском теста через этот комплект тестов я экспортирую некоторые переменные среды через скрипт оболочки, который вызывает тестовый комплект после экспорта переменных. Когда жгут появляется на рисунке, он проверяет, находятся ли переменные в среде, и выполняет операции в зависимости от значений переменных env.

Однако после выполнения теста, я думаю, что значения переменных среды не очищаются, как в следующий раз, он собирает эти значения, даже если они не установлены через скрипт оболочки.

Если они установлены явно, жгут извлекает новые значения, но если мы очистим его в следующий раз, он снова забирает значения, установленные в 1-м цикле.

Я пытался очистить переменные с помощью команды del os.environ ['var'] "после каждого выполнения теста, но это не решило проблему. Кто-нибудь знает, почему эти значения сохраняются?

На оболочке эти переменные не установлены, как видно из команды env 'env'. Только в тестовом жгуте он показывает значения. Ни одна из переменных env не хранит свои значения в текстовых файлах.

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Процесс python не может влиять на среду родительского процесса оболочки, который его запустил. Если у вас есть родительская оболочка, ее среда сохранится, если / пока сама оболочка не изменит ее.

Однако скрипт bash может устанавливать переменные окружения только для дочернего скрипта, например:

export OPTIONS=parent
OPTIONS=child python child.py
echo $OPTIONS

Это будет повторять "parent", а не "child", но процесс python увидит OPTIONS=child. Вы не очень четко описываете свои настройки, но, может быть, это поможет?

1 голос
/ 09 марта 2012

подоболочка может изменять переменные, унаследованные от родителя, но изменения, сделанные дочерним элементом, не влияют на родителя.
Когда запускается новая подоболочка, в которой видна переменная, экспортированная из родителяПеременная не установлена ​​del os.environ['var'], но значение этой переменной в родительском файле остается прежним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...