【问题标题】:subprocess execution with different python version不同python版本的子流程执行
【发布时间】:2020-09-17 13:47:08
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试使用子流程如下:subprocess.Popen(["path/to/python2/exectubale", "path/to/your/script"])
  • 问题是我使用的子进程命令是这样的: Popen(['roslaunch", "pkg1", "launchfile.launch"]) 它是 roslaunch 命令将在引擎盖下使用 python .

标签: python python-3.x python-2.7 subprocess environment-variables


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    相关资源
    最近更新 更多