首页 > 解决方案 > 不同python版本的子流程执行

问题描述

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

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

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

标签: pythonpython-3.xpython-2.7subprocessenvironment-variables

解决方案


我发现的最简单的解决方案:

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

推荐阅读