Django(&Pinax):追溯"AppRegistryNotReady:尚未加载应用程序." 例外

TCA*_*n07 5 python django pinax

我正在使用Django 1.7.5,并试图建立pinax项目团队的首发.在运行时python manage.py check,我会遇到`django.core.exceptions.AppRegistryNotReady:尚未加载应用程序.'.

我已经在StackOverflow和其他地方阅读了类似的错误,似乎这个错误来自各种原因,并且往往涉及特定情况的特定修复.所以我可以提前删除几个解决方案:1)这不是以前Django版本的升级; 2)因此,wsgi.py正确使用较新的from django.core.wsgi import get_wsgi_application.

完整的堆栈跟踪:

(env)trevor@nikola:webapp.git$ python manage.py check
Traceback (most recent call last):
  File "manage.py", line 9, in <module>
    startup.run()
  File "/Users/trevor/zenith/webapp.git/djangoapp/startup.py", line 22, in run
    admin.autodiscover()
  File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 23, in autodiscover
    autodiscover_modules('admin', register_to=site)
  File "/usr/local/lib/python2.7/site-packages/django/utils/module_loading.py", line 67, in autodiscover_modules
for app_config in apps.get_app_configs():
  File "/usr/local/lib/python2.7/site-packages/django/apps/registry.py", line 137, in get_app_configs
    self.check_apps_ready()
  File "/usr/local/lib/python2.7/site-packages/django/apps/registry.py", line 124, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
Run Code Online (Sandbox Code Playgroud)

该错误源于pinax startup.run(),它包含两个调用:autoload(["receivers"])将模块加载到settings.INSTALLED_APPS,和admin.autodiscover().这是自动加载:

def autoload(submodules):
    for app in settings.INSTALLED_APPS:
        mod = import_module(app)
        # print('Module: \t\n%s' % str(mod))
        for submodule in submodules:
            # print('Submodule: \t\n%s\n' % str(submodule))
            try:
                import_module("{0}.{1}".format(app, submodule))
            except:
                if module_has_submodule(mod, submodule):
                    raise
Run Code Online (Sandbox Code Playgroud)

这会INSTALLED_APPS成功导入列出的所有应用,但随后admin.autodiscover()会抛出Apps aren't loaded yet.消息.我不确定我错过了什么......可能是显而易见的!

哦,最后:我已经读过关于import django; django.setup()修复的内容,但我认为这是针对脚本和交互式的,而不是django项目?因为我尝试运行交互式,导入我的项目设置,运行configure(),运行django.setup(),然后退出,但是当我尝试执行runserver时,这对上述问题没有影响......: - /想法?

TCA*_*n07 3

编辑 - 更新和摘要: \npinax-project-teams 代码与 Django 1.7 不完全兼容,至少在新 Django 项目的初始“原始”安装中不兼容。解决方法包括以下几个步骤:

\n\n
    \n
  1. startup.py从(第 21 行,inrun() )中删除显式/冗余应用程序加载:注释掉或删除admin.autodiscover()
  2. \n
  3. 显式安装 Django 1.6.5 (pip install Django==1.6.5 )。
  4. \n
  5. 通过django 1.6版本同步数据库(python manage.py syncdb )。
  6. \n
  7. 显式安装 Django 1.7.5 (pip install Django==1.7.5 )。
  8. \n
\n\n

原始答复帖: \n我想我已经缩小了范围,如果不是在范围内,至少是在根本原因上。虽然我的项目不是从 Django <=1.6 到 1.7 的升级,但这仍然是一个问题。pinax-project-team中的某些内容使其默认与 Django 1.7不兼容。相同的安装将允许syncdb然后在1.6.5runserver django 安装上,但 django-1.7.5 会抛出Apps aren\'t loaded yet.

\n\n

我找到了一长串Django 1.7 发行说明列表,我正在开始查看它,看看是否可以确定不兼容的原因。

\n\n

至少问题之一是 Pinax 中的“额外”自动发现startup.py从 1.7 版本开始,它会在 Django 自己的启动过程中自动执行。这似乎解决了应用程序加载问题...但django.contrib.sites. 在 1.7 中运行时migrate,其中一项迁移由于数据库中缺少表而失败,特别是django_site(下面的完整跟踪)。这张表确实存在于 1.6 django 安装的数据库中。修改1.7的设置以指向1.6项目中的sqlite文件解决了这个问题,瞧\xc3\xa0,它可以工作。所以这是我在 pinax-project-teams 和 Django 1.7 之间发现的仅有的两个冲突。

\n\n
(env)trevor@nikola:mysite7$ python manage.py migrate\nOperations to perform:\n  Synchronize unmigrated apps: wiki, account, eventlog, kaleo, profiles, easy_thumbnails, pinax_theme_bootstrap, teams, bootstrapform\n  Apply all migrations: admin, contenttypes, sites, auth, sessions\nSynchronizing apps without migrations:\n  Creating tables...\n  Installing custom SQL...\n  Installing indexes...\nTraceback (most recent call last):\n  File "manage.py", line 11, in <module>\n    execute_from_command_line(sys.argv)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line\n    utility.execute()\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute\n    self.fetch_command(subcommand).run_from_argv(self.argv)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv\n    self.execute(*args, **options.__dict__)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute\n    output = self.handle(*args, **options)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 128, in handle\n    created_models = self.sync_apps(connection, executor.loader.unmigrated_apps)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 298, in sync_apps\n    call_command(\'loaddata\', \'initial_data\', verbosity=self.verbosity, database=connection.alias, skip_validation=True, app_label=app_label, hide_empty=True)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 115, in call_command\n    return klass.execute(*args, **defaults)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute\n    output = self.handle(*args, **options)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/commands/loaddata.py", line 61, in handle\n    self.loaddata(fixture_labels)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/commands/loaddata.py", line 91, in loaddata\n    self.load_label(fixture_label)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/management/commands/loaddata.py", line 148, in load_label\n    obj.save(using=self.using)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/core/serializers/base.py", line 173, in save\n    models.Model.save_base(self.object, using=using, raw=True)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/models/base.py", line 617, in save_base\n    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/models/base.py", line 679, in _save_table\n    forced_update)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/models/base.py", line 723, in _do_update\n    return filtered._update(values) > 0\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/models/query.py", line 600, in _update\n    return query.get_compiler(self.db).execute_sql(CURSOR)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1004, in execute_sql\n    cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 786, in execute_sql\n    cursor.execute(sql, params)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 81, in execute\n    return super(CursorDebugWrapper, self).execute(sql, params)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute\n    return self.cursor.execute(sql, params)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__\n    six.reraise(dj_exc_type, dj_exc_value, traceback)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute\n    return self.cursor.execute(sql, params)\n  File "/Users/trevor/code/pinax/7-pinaxtest/env/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 485, in execute\n    return Database.Cursor.execute(self, query, params)\ndjango.db.utils.OperationalError: Problem installing fixture \'/Users/trevor/code/pinax/7-pinaxtest/mysite7/fixtures/initial_data.json\': Could not load sites.Site(pk=1): no such table: django_site\n
Run Code Online (Sandbox Code Playgroud)\n