Django 3中的Python 2脚本

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

我有一个脚本,该脚本使用的是python 3中不可用的库。我使用了this question的答案(execnet)从python 3脚本Y调用python 2脚本X。这正常工作,没有任何问题。我将两个脚本都添加到要在其中使用脚本X的Django应用程序的目录中。测试脚本Y仍然有效。导入要从views.py调用的脚本Y即可。在Y表单views.py中调用该函数即可。但是现在脚本Y不再找到脚本X。

Django错误说ImportError: No module named X

如果我将settings.py脚本中的脚本添加到INSTALLED_APPS,则会得到

ModuleNotFoundError: No module named 'X'

是否有更简单的方法可以从Django 3运行python2脚本?

python django compatibility
1个回答
0
投票

我不建议您这样做,但是如果您真的小溪:

  • 为您的Python 2脚本创建一个名为virtualenv之类的Python 2 py2_venv
  • 将所需的软件包安装到py2_venv

然后,在视图中(运行Python 3+和Django 2 +):

from subprocess import check_output
from django.views.generic import TemplateView

class MyView(TemplateView):
    template_name = "my_app/my_template.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["program_output"] = check_output(
            "source /path/to/py2_venv/bin/activate /path/to/py2_script.py",
            shell=True,
        ).decode("utf-8")
        return context

此示例将从视图中运行Python 2脚本,并将程序的输出作为program_output放入上下文中。祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.