代码之家  ›  专栏  ›  技术社区  ›  Gui

使用两个不同的env在其他python脚本中调用python脚本

  •  1
  • Gui  · 技术社区  · 7 年前

    我有两个不同的Django应用程序,都运行在同一个Linux服务器(ubuntu18.04 LTS)上,使用Python 3.6 64位。

    这个 应用程序A 在Django1.11和 虚拟病毒A .

    这个 附录B 在Django 2.1和 .

    附录B 我需要调用一个函数来迁移表 应用程序A

    /path/to/envA/python /path/to/appA/manage.py migrate
    

    但是当我尝试运行相同的命令时 App B内部 子流程 我有一个 错误,我怀疑这是因为不同的环境。

    这是我在应用程序B中的代码:

    subprocess.Popen(["/path/to/envA/python", "/path/to/appA/manage.py", "migrate"], 
                     stdin=subprocess.PIPE,
                     stdout=subprocess.PIPE,
                     stderr=subprocess.PIPE)
    

    我还试着用 shell=True

    1 回复  |  直到 7 年前
        1
  •  1
  •   Gui    7 年前

    我通过考试解决了这个问题 env 变量输入 Popen 功能:

    subprocess.Popen(["/path/to/envA/python", "/path/to/appA/manage.py", "migrate"], 
                     stdin=subprocess.PIPE,
                     stdout=subprocess.PIPE,
                     stderr=subprocess.PIPE,
                     env={"PATH": "/path/to/envA/python"})