困惑:Django "无法导入 app.views",但可以导入 app,WSGI中?

2 投票
2 回答
4474 浏览
提问于 2025-04-16 12:32

我遇到了一个奇怪的Django问题,正在用mod_wsgi运行Django。

Django能找到urls.py,然后就出现了:

ViewDoesNotExist: Could not import app.views. Error was: No module named views

奇怪的是,如果我在urls.py的导入语句中有

import app

我就不会收到错误(直到它碰到上面提到的app.views),但如果我有

from app import views

在我的导入语句中,我就会收到错误。

我的Python路径,在Django的调试信息中显示,包含了包含文件夹和应用文件夹。如果我从命令行运行Python,我可以正常导入app.views。我也可以用python manage.py runserver正常运行这个应用。

我还尝试从urls.py打印Python路径到错误输出中,它里面也有应用的路径。

这可能是什么原因呢?

我最开始想,可能是应用文件夹里没有__init__.py,但实际上是有的。

谢谢!

更新

在运行服务器的应用中,如果我尝试

print app.__file__
>> \path\to\app\__init__.py

但在wsgi版本中,我只看到:

print app.__file__
>> \path\to\app\

换句话说,它就是找不到__init__.pyc

2 个回答

-2

你的网络服务器没有足够的文件句柄了。请将WSGI应用程序重新配置为守护进程模式。

3

这可能是个循环依赖的问题——在 views 里,有一个模块在引入另一个模块,而那个模块又在试图引入 views

撰写回答