【问题标题】:Baffled: Django "could not import app.views" but can import app, in WSGI?困惑:Django“无法导入app.views”但可以在WSGI中导入应用程序?
【发布时间】:2011-07-04 10:43:44
【问题描述】:

我遇到了一个奇怪的 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

在我的导入语句中,我得到一个错误。

我的 python 路径,如 Django 调试信息中所示,其中包含包含文件夹和应用程序文件夹。如果我从命令行运行 Python,我可以导入 app.views 就好了。我可以使用python manage.py runserver 运行应用程序就好了。

我也尝试过从urls.py 打印到stderr 的python 路径,并且其中包含应用程序的路径。

会发生什么?

我的第一个想法是,app 文件夹中可能没有__init__.py,但确实有。

谢谢!

更新

如果我尝试在 runserver 应用程序中

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

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

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

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

【问题讨论】:

    标签: python django django-views mod-wsgi django-wsgi


    【解决方案1】:

    可能是循环依赖 - views 中的某些内容正在导入另一个模块,而该模块本身正在尝试导入 views

    【讨论】:

    • 我已将views.py 的内容替换为print 'hello',但仍然是同样的错误。啊!
    • 另外,我可以使用python manage.py runserver 很好地运行 Django 应用程序。这个问题只存在于 WSGI。
    • 如果找不到循环导入,那么您可以尝试在“blog.dscpl.com.au/2010/03/…”末尾描述的 WSGI 脚本作为解决方法。
    • @Graham 谢谢 - 我会试试你的脚本。听起来这不是一个罕见的问题。
    • 我后来发现stackoverflow.com/questions/3749033/… 听起来完全一样。
    【解决方案2】:

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

    【讨论】:

    • 谢谢 - 任何指示如何做到这一点? (谷歌今天不是我的朋友) - 我正在尝试这里定义的 WSGIDaemonProcess code.google.com/p/modwsgi/wiki/IntegrationWithDjango 但没有成功。
    • 另外,即使在我重新启动 apache 之后,我也会立即收到错误 - 那时它会用完文件句柄吗?
    • 文件句柄用完将是另一个错误。正如 Daniel 所说,更可能是循环导入或导入排序问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2020-12-27
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多