2015-03-02 2 views
5

Я использую Django 1.7.5 и пытаюсь построить стартер pinax-project-teams. При запуске python manage.py check, я получаю удар с помощью `django.core.exceptions.AppRegistryNotReady: приложения еще не загружены. '.Django (& Pinax): Отслеживание «AppRegistryNotReady: приложения еще не загружены». exception

Я прочитал множество подобных ошибок здесь, в StackOverflow и в других местах, и кажется, что эта ошибка возникает из-за множества причин и имеет тенденцию включать в себя довольно специфические для конкретного случая исправления. Поэтому я могу удалить пару решений: 1) Это не обновление от предыдущей версии Django; и 2) в результате wsgi.py правильно использует новинку from django.core.wsgi import get_wsgi_application.

Полный StackTrace:

(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(), который состоит из двух вызовов: 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 

Это проходит через INSTALLED_APPS и успешно импортирует всех приложения в список, но затем сразу же после admin.autodiscover() бросает Apps aren't loaded yet. сообщения. Я не уверен, что мне не хватает ... что-то очевидное, скорее всего!

О, и, наконец: Я читал об исправлении import django; django.setup(), но я думал, что это для скриптов & интерактивных, а не проектов django? Поскольку я пытался запустить интерактивный интерфейс, импортировать параметры моего проекта, запустить configure(), запустить django.setup() и выйти, но это не влияет на вышеупомянутую проблему при попытке выполнить runerver ...: -/Any идеи?

+0

О, и я рад опубликовать свои settings.py, urls.py, что угодно, я просто не хотел нагромождать содержимое уже в исходном сообщении. – TCAllen07

+0

** Обновление: ** Я попытался вставить 'django.setup()' внутри 'startup.run()' pinax '' непосредственно перед 'autoload (['receivers'])' и 'admin.autodiscover()', и это исправляет ошибку AppRegistry, но в результате серверный процесс фактически не имеет ни одного из доступных/функциональных приложений команд pinax-project (например, учетных записей, калео, вики, пользователей, всех несуществующих). – TCAllen07

ответ

3

Edit - Update & Резюме: Код pinax-проект-команды не полностью совместима с Django 1.7, по крайней мере, на начальном «сырой» установки нового проекта Django. Обходной состоит из нескольких этапов:

  1. Удалить явную/избыточное приложение нагрузка от startup.py (line 21, in run()): закомментировать или удалить admin.autodiscover().
  2. Явно установить Django 1.6.5 (pip install Django==1.6.5).
  3. База данных синхронизации через версию django 1.6 (python manage.py syncdb).
  4. Explicity install Django 1.7.5 (pip install Django==1.7.5).

Оригинал ответ Сообщение: Я думаю, что я сузил его немного, если не в объеме, по крайней мере, в первопричине. Хотя мой проект не был обновлен от Django < = 1,6 до 1,7, это, тем не менее, проблема. Что-то в pinax-project-team делает это по умолчанию несовместимым с Django 1.7. Точная установка позволит syncdb, а затем runserver на 1.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. При запуске migrate в 1.7 одна из миграций выходит из строя из-за отсутствующей таблицы в БД, в частности django_site (полный след ниже). Эта таблица делает в версии 1.6 django install. Модификация настроек 1.7 для указания на файл sqlite в проекте 1.6 решает эту проблему, а voilà - работает. Таким образом, это единственные конфликты, которые я нашел между командами-синтаксисами и 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, сообщающий об этом же файле без необходимости обновления и/или понижения рейтинга.

Смежные вопросы