2014-08-27 3 views
0

У меня есть скрипт python, запустите файл set_env.sh. Позже я могу изменить эту новую переменную среду в set_env.sh Возможно?Получить изменение переменной среды из скрипта python

set_env.sh

var1="value1" var2="value2" var3="value3" 

get_env.py

import os 
os.system("set_env.sh") 
print os.environ['var1'] 

Результат: KeyError: 'var1'

Я знаю, что я могу использовать os.environ [ 'var1'] = 'value' (или установить var env) в файл python. Но у меня есть доступ к этой информации об окружающей среде только из файла оболочки.

Вы можете мне помочь?

+0

При запуске 'env' из оболочки - вы видите настройки переменных? – alfasin

+0

изменить переменные среды/значения и прочитать их в python – programmerjake

+0

@programmerjake это то, что «os.environ» делает – alfasin

ответ

0

Мое решение температура была

(?P<variable>[\w]*)[ ]*[\=][ ]*[\"|\']{0,1}(?P<value>[\w]*)[\"|\']{0,1} 

Regular expression visualization

Debuggex Demo

 enviroment_regex = "(?P<variable>[\w]*)[ ]*[\=][ ]*[\"|\']{0,1}(?P<value>[\w]*)[\"|\']{0,1}" 
     match_object = re.search(enviroment_regex, open("set_env.sh", "r").read()) 
     os.environ[match_object.group("variable")] = match_object.group("value") 
0

Для того, чтобы установить переменную окружения с использованием Python:

os.environ["var1"] = "value1" 

Обратите внимание, что python создает среду, что означает, что env будет содержать var1, если вы находитесь в программе python. Если вы выберете из оболочки env (после запуска программы) не будет никакого воспоминания о var1.

Для получения дополнительной информации: https://www.inkling.com/read/programming-python-mark-lutz-4th/chapter-3/shell-environment-variables

+0

Мой скрипт py выполняет скрипт sh. – moylop260

+0

@ moylop260 да, но он выполняет его в подоболочке, которая закрывается сразу после завершения скрипта. Я предполагаю, что правильный вопрос будет: что вы пытаетесь сделать? Если вы зависите от переменных env в части скрипта python, тогда используйте мой ответ. – alfasin

Смежные вопросы