【问题标题】:Upgrade to Django 1.7 - AppRegistryNotReady exception升级到 Django 1.7 - AppRegistryNotReady 异常
【发布时间】:2014-10-12 10:49:44
【问题描述】:

在将 Django 版本从 1.6.7 升级到 1.7 后,我正在努力使事情正常进行。看来我无法专注于正确的事情。我尝试恢复目前的情况。

问题是:如果我将命令 django.setup() 留在我的 wsgi.py 文件中,当我尝试访问我的网站时,我会收到内部服务器错误 (500)。查看日志,我得到:

[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1] mod_wsgi (pid=23258): Target WSGI script '/home/thrasher/webapps/django/myproject.wsgi' cannot be loaded as Python module.
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1] mod_wsgi (pid=23258): Exception occurred processing WSGI script '/home/thrasher/webapps/django/myproject.wsgi'.
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1] Traceback (most recent call last):
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1]   File "/home/thrasher/webapps/django/myproject.wsgi", line 16, in <module>
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1]     application = get_wsgi_application()
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1]   File "/home/thrasher/webapps/django/lib/python2.7/django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1]     django.setup()
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1]   File "/home/thrasher/webapps/django/lib/python2.7/django/__init__.py", line 21, in setup
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1]     apps.populate(settings.INSTALLED_APPS)
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1]   File "/home/thrasher/webapps/django/lib/python2.7/django/apps/registry.py", line 78, in populate
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1]     raise RuntimeError("populate() isn't reentrant")
[Sun Oct 12 12:38:50 2014] [error] [client 127.0.0.1] RuntimeError: populate() isn't reentrant

但是,如果我评论 django.setup() 调用,尝试访问该网站会得到这个堆栈跟踪:

Environment:


Request Method: GET
Request URL: http://www.creepyvisions.it/

Django Version: 1.7
Python Version: 2.7.8
Installed Applications:
('django.contrib.auth',
 'django.contrib.admin.apps.SimpleAdminConfig',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'myproject.archivio',
 'sorl.thumbnail',
 'django.contrib.sitemaps',
 'rest_framework')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/home/thrasher/webapps/django/lib/python2.7/django/core/handlers/base.py" in get_response
  98.                 resolver_match = resolver.resolve(request.path_info)
File "/home/thrasher/webapps/django/lib/python2.7/django/core/urlresolvers.py" in resolve
  338.             for pattern in self.url_patterns:
File "/home/thrasher/webapps/django/lib/python2.7/django/core/urlresolvers.py" in url_patterns
  367.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/thrasher/webapps/django/lib/python2.7/django/core/urlresolvers.py" in urlconf_module
  361.             self._urlconf_module = import_module(self.urlconf_name)
File "/usr/local/lib/python2.7/importlib/__init__.py" in import_module
  37.     __import__(name)
File "/home/thrasher/webapps/django/myproject/urls.py" in <module>
  33.                        url(r'^admin/', include(admin.site.urls)),
File "/home/thrasher/webapps/django/lib/python2.7/django/contrib/admin/sites.py" in urls
  260.         return self.get_urls(), self.app_name, self.name
File "/home/thrasher/webapps/django/lib/python2.7/django/contrib/admin/sites.py" in get_urls
  221.             self.check_dependencies()
File "/home/thrasher/webapps/django/lib/python2.7/django/contrib/admin/sites.py" in check_dependencies
  159.         if not apps.is_installed('django.contrib.admin'):
File "/home/thrasher/webapps/django/lib/python2.7/django/apps/registry.py" in is_installed
  223.         self.check_apps_ready()
File "/home/thrasher/webapps/django/lib/python2.7/django/apps/registry.py" in check_apps_ready
  124.             raise AppRegistryNotReady("Apps aren't loaded yet.")

Exception Type: AppRegistryNotReady at /
Exception Value: Apps aren't loaded yet.

为了完整起见,这里是wsgi相关的代码:

myprojext.wsgi

import os
import sys

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

wgsi.py

import django
from django.core.handlers.wsgi import WSGIHandler


def get_wsgi_application():
    #django.setup()
    return WSGIHandler()

对我来说,事情看起来很奇怪,我在官方 Django 文档和各种论坛中进行了很多搜索,但我仍然无法让事情正常工作。任何建议将不胜感激。

【问题讨论】:

  • 您是否在代码中的任何位置使用get_user_model()?您是否在代码中的其他任何地方调用 django.setup()
  • 嗨@KevinChristopherHenry,不,我没有使用这些方法。事实证明,问题在于 INSTALLED_APPS 中的 django.contrib.admin 重复。看来这是问题的根源。一旦我删除了第二个引用,我在 wsgi.py 中取消了 django.setup() 的注释,事情又变得晴朗而清晰。现在一切正常。
  • @LucaTrifilio 请将其写为答案,然后接受。否则,此问题将继续显示为未回答的问题。

标签: django wsgi


【解决方案1】:

原来问题在于 INSTALLED_APPS 中的 django.contrib.admin 重复。看来这是问题的根源。一旦我删除了第二个引用,我在 wsgi.py 中取消了 django.setup() 的注释,事情又变得晴朗而清晰。现在一切正常。

【讨论】:

    猜你喜欢
    • 2016-04-13
    • 2014-10-30
    • 2014-12-04
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2015-05-12
    相关资源
    最近更新 更多