我遇到了一个奇怪的 Django 问题,使用 mod_wsgi 运行 Django。
Django 正在寻找 urls.py,然后说:
ViewDoesNotExist: Could not import app.views. Error was: No module named views
奇怪的是,如果我有
import app
在 urls.py 的导入语句中,我没有收到错误(直到它如上所示命中 app.views),但如果我有
from app import views
在我的导入语句中,出现错误。
如 Django 调试信息所示,我的 python 路径同时包含包含文件夹和应用程序文件夹。如果我从命令行运行 Python,我可以导入 app.views 就好了。我可以使用 python manage.py runserver 运行应用程序就好了。
我也试过从 urls.py 打印到 stderr 的 python 路径,它里面有应用程序的路径。
可能发生了什么?
我的第一个想法是应用程序文件夹中可能没有 __init__.py,但有。
谢谢!
更新
在 runserver 应用程序中,如果我尝试
print app.__file__
>> \path\to\app\__init__.py
但是在wsgi版本中,我只看到:
print app.__file__
>> \path\to\app\
换句话说,就是找不到__init__.pyc。
请您参考如下方法:
可能是循环依赖 - views 中的某些东西正在导入另一个模块,该模块本身正在尝试导入 views。
