不同 python 版本的子流程执行

subprocess execution with different python version

我有一个在 python3 虚拟环境中执行的脚本,在这个脚本中有一个 subrocess.Popen 命令启动一个仅适用于 python2 的应用程序。有没有办法只为这个进程改变环境,让这个子进程只找到 python2?

到目前为止,我已经尝试了以下方法,但没有成功。

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

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

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,
                             )