Как я могу сохранить системные среды, заданные в файле bat, который вызывается скриптом python - PullRequest
4 голосов
/ 30 марта 2010

Я вызываю файлы .bat в Python, чтобы установить системные среды, и проверяю, что системные среды были установлены правильно, а затем снова для запуска кода Python системные среды возвращаются к исходным. Как я могу решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 30 марта 2010

Настройки среды всегда происходят в дочернем процессе и никогда напрямую не влияют на родительский процесс. Однако вы можете запустить (в том же дочернем процессе, который изменил свою среду, в самом конце этого процесса) команду (env в Unix-подобной среде, я считаю set в DOS, где .bat файлы жили и в Windows, где .cmd файлы похожи), который выводит среду в стандартный вывод или в файл; родительский процесс может прочитать этот файл и применить изменения в своей среде.

В Unix subprocess.Popen('thescript; env', shell=True, stdout=...) может быть достаточно. В Windows я не уверен, что передача в качестве первого аргумента foo.bat; set будет работать; если это не так, просто создайте крошечную временную «вспомогательную летучую мышь», которая делает foo.bat, затем set, и запустите ее вместо этого.

1 голос
/ 30 марта 2010

Я подозреваю, что вы вызываете командный файл из программы Python, а затем возвращаетесь к вызывающему коду Python. Дочерний процесс - в этом случае ваш вызов пакетного файла - не влияет на среду родительского процесса (ваш пакетный файл).

Пакетные файлы, которые устанавливают среду, обычно записываются как:

# set up my environment 
python myprogram.py

В этом случае подчиненная программа Python унаследует среду вызывающего пакетного файла.

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