2016-05-11 2 views
0

Пытается использовать django-shopify-sync в проекте Django 1.9. При загрузке конфигурации для приложения она дает мне следующую ошибку, вероятно, потому что она пытается загрузить некоторые модели в конфиге?Django 1.9 django.core.exceptions.AppRegistryNotReady: Приложения еще не загружены

Пробовал перемещать два импорта, которые в конечном итоге импортируют модели в функцию ready() ниже, но по-прежнему получают ту же ошибку. Culpirt линии 2 и 3 в следующем файле https://github.com/andresdouglas/django-shopify-sync/blob/master/shopify_sync/apps.py

Ошибка является:

$ python manage.py runserver 
Unhandled exception in thread started by <function wrapper at 0x10753e500> 
Traceback (most recent call last): 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run 
    autoreload.raise_last_exception() 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception 
    six.reraise(*_exception) 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate 
    app_config = AppConfig.create(entry) 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/apps/config.py", line 116, in create 
    mod = import_module(mod_path) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Users/andres/.virtualenvs/[...]/src/shopify-sync/shopify_sync/apps.py", line 2, in <module> 
    from shopify_sync.handlers import webhook_received_handler 
    File "/Users/andres/.virtualenvs/[...]/src/shopify-sync/shopify_sync/handlers.py", line 3, in <module> 
    from .models import (CustomCollection, Customer, Order, Product, Shop, 
    File "/Users/andres/.virtualenvs/[...]/src/shopify-sync/shopify_sync/models/__init__.py", line 3, in <module> 
    from .address import Address 
    File "/Users/andres/.virtualenvs/[...]/src/shopify-sync/shopify_sync/models/address.py", line 6, in <module> 
    from .base import ShopifyResourceModel 
    File "/Users/andres/.virtualenvs/[...]/src/shopify-sync/shopify_sync/models/base.py", line 144, in <module> 
    class ShopifyResourceModel(models.Model): 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/db/models/base.py", line 94, in __new__ 
    app_config = apps.get_containing_app_config(module) 
    File "/Users/andres/.virtualenvs/[...]/lib/python2.7/site-packages/django/apps/registry.py", line 239, in get_containing_app_config 
    self.check_apps_ready() 
    File "/Users/andres/.virtualenvs/[...]/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. 

UPDATE: Если переместить следующие строки (импорт модели) https://github.com/andresdouglas/django-shopify-sync/blob/master/shopify_sync/handlers.py#L3-L4 внутрь get_topic_models, кажется, чтобы исправить ошибку. Но это грязно, может ли кто-нибудь придумать лучшее решение?

+0

Это, безусловно, похоже на виновника, но не виновато, пока не доказано. Вы видите эту ошибку, когда вы делаете ./manage.py runningerver или с чем-то еще – e4c5

+0

@ e4c5 при запуске сервера, да – Andres

+0

вы зарегистрировали функцию storeify-sync в качестве приложения в INSTALLED_APPS? – e4c5

ответ

0

Похоже, у вас может быть проблема с заказом. Убедитесь, что ваше приложение находится в кортеже INSTALLED_APPS после django-shopify-sync. Вы можете найти несколько деталей в Application registry documentation.

Как неудовлетворительный, как встроенный импорт, вы можете застрять в нем. Я предлагаю двигаться

from shopify_sync.handlers import webhook_received_handler 
from shopify_webhook.signals import webhook_received 

в метод ready в apps.py. Это приведет к задержке импорта до тех пор, пока модели не будут готовы.

Изменение Я попытался это:

diff --git a/shopify_sync/apps.py b/shopify_sync/apps.py 
index 663b43b..0bc1fcc 100644 
--- a/shopify_sync/apps.py 
+++ b/shopify_sync/apps.py 
@@ -1,7 +1,5 @@ 
from django.apps import AppConfig 
-from shopify_sync.handlers import webhook_received_handler 
-from shopify_webhook.signals import webhook_received 
- 
+import importlib 

class ShopifySyncConfig(AppConfig): 
    """ 
@@ -16,5 +14,9 @@ class ShopifySyncConfig(AppConfig): 
     The ready() method is called after Django setup. 
     """ 

+  signals_webhook_received = importlib.import_module('.signals', package='shopify_webhook') 
+  handlers_webhook_received_handler = importlib.import_module('.handlers', package='shopify_sync') 
+ 
     # Connect shopify_webhook's webhook_received signal to our synchronisation handler. 
-  webhook_received.connect(webhook_received_handler, dispatch_uid = 'shopify_sync_webhook_received_handler') 
+  signals_webhook_received.webhook_received.connect(handlers_webhook_received_handler.webhook_received_handler, dispatch_uid = 'shopify_sync_webhook_received_handler') 
+ 
+0

django-shopify-sync - это приложение, которое я пытаюсь добавить. На какое другое приложение вы ссылаетесь? – Andres

+0

Плохо, я неправильно понял ваш вопрос. Лемм смотрю немного ближе. –

+0

@Andres: Ответ должен быть актуальным сейчас. –

0

Если переместить следующие строки (импорт модели) https://github.com/andresdouglas/django-shopify-sync/blob/master/shopify_sync/handlers.py#L3-L4

from .models import (CustomCollection, Customer, Order, Product, Shop, 
       SmartCollection) 

внутри get_topic_models, кажется, чтобы исправить ошибку. Но это грязно, может ли кто-нибудь придумать лучшее решение?

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