我有一个脚本,该脚本使用的是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脚本?
我不建议您这样做,但是如果您真的小溪:
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
放入上下文中。祝你好运!