2015-03-02 117 views
5

我使用Django 1.7.5,并试图构建pinax-project-teams启动器。运行python manage.py check时,我遇到了`django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。'。Django(&Pinax):追溯“AppRegistryNotReady:应用程序尚未加载。”异常

我已经阅读了StackOverflow和其他地方的无数类似错误,看起来这个错误来自各种原因,并且倾向于涉及特定环境的修复。所以我可以预先删除一些解决方案:1)这是而不是从以前的Django版本升级; 2)因此,wsgi.py正确使用较新的from django.core.wsgi import get_wsgi_application

完整堆栈跟踪:autoload(["receivers"])它加载在settings.INSTALLED_APPS模块和admin.autodiscover()

(env)[email protected]: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. 

该错误pinax的startup.run(),它由两个电话中的茎。下面是自动加载:

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 

此经过INSTALLED_APPS并成功导入列出的所有的应用程序,但随后后立即admin.autodiscover()抛出Apps aren't loaded yet.消息。我不确定我错过了什么......很明显,可能!

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

+0

哦,我很高兴发布我的settings.py,urls.py,任何需要的东西,我只是不想堆在已经在原始文章中的内容。 – TCAllen07 2015-03-02 22:42:06

+0

**更新:**我尝试在'autoload(['receivers'])'和'admin.autodiscover()'之前的pinax的'startup.run()'中插入'django.setup()',并修复了AppRegistry错误,但是由此产生的服务器进程实际上并没有任何可用/功能的pinax-project-teams应用程序(即帐户,kaleo,wiki,用户,都不存在)。 – TCAllen07 2015-03-03 00:24:11

回答

3

编辑 - 更新&摘要: 的pinax,项目团队代码与Django的1.7完全兼容,至少不会在一个新的Django项目的最初的“原始”的安装。一种解决方法包括以下几个步骤:从startup.pyline 21, in run()

  1. 明确删除/冗余的应用程序加载:注释掉或删除admin.autodiscover()
  2. 显式安装Django 1.6.5pip install Django==1.6.5)。
  3. 通过django 1.6版本(python manage.py syncdb)同步数据库。
  4. Explicity安装Django 1.7.5pip install Django==1.7.5)。

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

我发现了一个不错的长列表Django 1.7 release notes,我开始了解是否可以确定不兼容的原因。

至少有一个问题是Pinax在startup.py中的“额外”自动发现,其中as of 1.7 release is automatically executed在Django自己的启动过程中。这解决了应用程序加载问题,它似乎...但在django.contrib.sites还有另一个问题。在1.7中运行migrate时,由于DB中缺少表,特别是django_site(以下完整跟踪),导致其中一个迁移失败。这张表的确是存在于1.6的django install的db中。将1.7的设置修改为指向1.6项目中的sqlite文件解决了这个问题,并且它可以工作。所以这些是我在pinax-project-teams和Django 1.7之间发现的唯一两个冲突。

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

postgresql和其他数据库之间的区别很重要。如果您使用的是SQLite后端,那么您可以仅复制数据库文件本身以在多个位置重复使用。然后,您可以拥有一个1.6项目和一个1.7项目,向同一文件报告,而无需一直升级和/或降级。

相关问题