Как я могу импортировать переменные окружения завершенного процесса в Python? - PullRequest
1 голос
/ 24 июня 2010

Мне нужно написать скрипт на python, который запускает скрипт оболочки и импортирует переменные среды ПОСЛЕ завершения скрипта.

Представьте, что у вас есть скрипт оболочки "a.sh":

export MYVAR="test"

В Python я хотел бы сделать что-то вроде:

import os
env={}
os.spawnlpe(os.P_WAIT,'sh', 'sh', 'a.sh',env)
print env

и получите:

{'MYVAR'="test"}

Это возможно?

Ответы [ 2 ]

5 голосов
/ 24 июня 2010

Нет, любые изменения, внесенные в переменные среды в подпроцессе, остаются в этом подпроцессе. (Насколько я знаю, это так). Когда подпроцесс завершается, его среда теряется.

Я бы посоветовал заставить скрипт оболочки печатать свою среду или, по крайней мере, переменные, которые вас интересуют, в стандартный вывод (или стандартную ошибку, или он мог записать их в файл), и вы можете прочитать этот вывод от Python.

0 голосов
/ 24 июня 2010

Я согласен с постом Дэвида.

В Perl есть модуль Shell :: Source , который делает это.Он работает путем запуска нужного сценария в подпроцессе с добавлением env, который создает список пар значений переменных, разделенных символом =.Вы можете проанализировать это и «импортировать» среду в ваш процесс.Модуль стоит посмотреть, если вам нужно такое поведение.

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