Доступ к экспортированным переменным по вызываемому скрипту из python - PullRequest
0 голосов
/ 22 сентября 2018

Хотя есть много вопросов относительно доступа / установки переменных env в python, я не смог найти ответ для моего конкретного сценария.

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

Когда вам нужно, чтобы эти переменные были доступны из текущего сеанса, вы должны сделать

. ./script_exp_var.sh

, который, скажем,

export MYVAR = MYVAL

тогда, если вы запустите python, вы можете получить к нему доступ с помощью os.environ.get('MYVAR').

Мой вопрос заключается в том, как вызвать скрипт из python, а затем получить доступ к переменным env, которые вызвали только что экспортированный скрипт.Возможно ли это вообще, и если да, то как?Примечание: я знаю, что мог установить env var из python, используя os.environ["MYVAR"] = MYVAL, но я хотел бы использовать существующую логику в моем ./script_exp_var.sh, потому что он экспортирует много переменных.Также убедиться, что сначала выполняется сценарий, а затем выполняется python, также не вариант для моего сценария.

1 Ответ

0 голосов
/ 22 сентября 2018

Вы не можете.Переменные среды копируются из родительского в дочерний, а не обратно в родительский.

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

Вы могли бы написать парсер для чтения команд оболочки из python, но это большая работа.

Лучше написать сценарий оболочки с настройками в нем, а затем вызвать программу python как дочерний элемент сценария.

В качестве альтернативы, написать сценарий оболочки, который возвращает значения обратно в python, которыйможно забрать с помощью трубы.

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