выполнение подпроцесса с другой версией python - PullRequest
0 голосов
/ 30 мая 2020

У меня есть сценарий, который я выполняю в виртуальной среде python3, и внутри этого сценария есть команда subrocess.Popen, которая запускает приложение, работающее только с python2. Есть ли способ изменить среду только для этого процесса, чтобы этот подпроцесс находил только python2?

До сих пор я пробовал следующее, но не сработало.

os.environ["PATH"] = "/path/to/python2/bin:"+os.environ["PATH"] 

1 Ответ

0 голосов
/ 31 мая 2020

Самое простое решение, которое я нашел:

venv = os.environ.copy()
venv.update({"PATH": os.environ["PATH"].replace(venv['VIRTUAL_ENV'], 
                     'other/python/version/path')}) # might have to tweak this a bit only


proc2 = subprocess.Popen(["cmd",
                         env=venv,
                         stdout=sys.stdout,
                         stderr=sys.stderr,
                             )
...