具有不同python版本的子流程执行

问题描述 投票:0回答:1

我有一个脚本,该脚本在python3虚拟环境中执行,并且在此脚本中有subrocess.Popen命令,该命令启动仅适用于python2的应用程序。有没有一种方法可以仅更改此进程的环境,以使此子进程仅找到python2?

到目前为止,我已经尝试了以下尚未解决的问题。

os.environ["PATH"] = "/path/to/python2/bin:"+os.environ["PATH"] 
python python-3.x python-2.7 subprocess environment-variables
1个回答
0
投票

我找到的最简单的解决方案:

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,
                             )
© www.soinside.com 2019 - 2024. All rights reserved.