2015-03-02 16 views
5

Tôi đang sử dụng Django 1.7.5 và cố gắng xây dựng bộ khởi động pinax-project-teams. Khi chạy python manage.py check, tôi bị ảnh hưởng bởi `django.core.exceptions.AppRegistryNotReady: Ứng dụng chưa được tải. '.Django (& Pinax): Truy tìm lại "AppRegistryNotReady: Ứng dụng chưa được tải." ngoại lệ

Tôi đã đọc qua nhiều lỗi tương tự ở đây trên StackOverflow và các nơi khác, và có vẻ như lỗi này xuất hiện từ nhiều nguyên nhân khác nhau và có xu hướng liên quan đến các sửa lỗi khá cụ thể. Vì vậy, tôi có thể loại bỏ một vài giải pháp trả trước: 1) Đây là không bản nâng cấp từ phiên bản Django trước đó; và 2) do đó, wsgi.py là chính xác bằng cách sử dụng from django.core.wsgi import get_wsgi_application mới hơn.

Full 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. 

Các lỗi bắt nguồn từ pinax của startup.run(), trong đó bao gồm hai cuộc gọi: autoload(["receivers"]) mà tải các module trong settings.INSTALLED_APPS, và admin.autodiscover(). Dưới đây là autoload:

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 

này đi qua INSTALLED_APPS và nhập khẩu thành công tất cả ứng dụng được liệt kê, nhưng sau đó ngay sau khi admin.autodiscover() ném thông điệp Apps aren't loaded yet.. Tôi không chắc chắn những gì tôi đang thiếu ... một cái gì đó rõ ràng, có khả năng!

Ồ, và cuối cùng: Tôi đã đọc về sửa lỗi import django; django.setup(), nhưng tôi nghĩ đó là cho các kịch bản & tương tác, không phải dự án django? Bởi vì tôi đã thử chạy tương tác, nhập các thiết lập dự án của tôi, chạy cấu hình(), chạy django.setup(), và thoát, nhưng điều đó không có tác động đến vấn đề trên khi tôi cố gắng thực thi máy chủ ...: -/Any ý tưởng?

+0

Ồ, và tôi rất vui khi đăng lên settings.py, urls.py, bất cứ điều gì cần thiết, tôi chỉ không muốn chồng chất lên nội dung đã có trong bài đăng gốc. – TCAllen07

+0

** Cập nhật: ** Tôi đã thử chèn 'django.setup()' vào trong 'startup.run()' của pinax, ngay trước 'autoload (['receivers'])' và 'admin.autodiscover()', và điều này khắc phục lỗi AppRegistry, nhưng quá trình máy chủ kết quả không thực sự có bất kỳ ứng dụng pinax-project-team có sẵn/chức năng (tức là tài khoản, kaleo, wiki, người dùng, tất cả không tồn tại). – TCAllen07

Trả lời

3

Edit - Cập nhật & Tóm tắt: Mã pinax dự án-đội không phải là hoàn toàn tương thích với Django 1,7, ít nhất là không phải lúc ban đầu cài đặt "thô" của một dự án Django mới. Một cách giải quyết bao gồm một vài bước sau:

  1. Remove rõ ràng/dôi dư tải ứng dụng từ startup.py (line 21, in run()): bình luận-out hoặc xóa admin.autodiscover().
  2. Cài đặt rõ ràng Django 1.6.5 (pip install Django==1.6.5).
  3. Đồng bộ hóa cơ sở dữ liệu qua phiên bản django 1.6 (python manage.py syncdb).
  4. Sự bùng nổ cài đặt Django 1.7.5 (pip install Django==1.7.5).

gốc trả lời bài viết: Tôi nghĩ rằng tôi đã thu hẹp nó xuống một chút, nếu không trong phạm vi, ít nhất là trong nguyên nhân gốc rễ. Mặc dù dự án của tôi không phải là bản nâng cấp từ Django < = 1.6 đến 1.7, tuy nhiên đây là một vấn đề. Một cái gì đó trong pinax-project-team làm cho nó theo mặc định không tương thích với Django 1.7. Cài đặt giống hệt sẽ cho phép syncdb và sau đó runserver trên 1.6.5 cài đặt django, nhưng django-1.7.5 sẽ ném số Apps aren't loaded yet.

Tôi đã tìm thấy danh sách dài tuyệt đẹp gồm Django 1.7 release notes, tôi bắt đầu xem liệu tôi có thể xác định nguyên nhân của sự không tương thích hay không.

Ít nhất một trong các vấn đề là tự động phát hiện "phụ" của Pinax trong startup.py, trong đó as of 1.7 release is automatically executed trong quá trình khởi động riêng của Django. Điều này giải quyết vấn đề tải ứng dụng, nó xuất hiện ... nhưng có một vấn đề khác trong django.contrib.sites. Khi chạy migrate trong 1,7, một trong các di chuyển không thành công do thiếu bảng trong DB, cụ thể là django_site (dấu vết đầy đủ bên dưới). Bảng này hiện tồn tại trong 1,6 dbango cài đặt của db. Sửa đổi các thiết lập của 1.7 để trỏ tới tệp sqlite trong dự án 1.6 giải quyết vấn đề này, và voilà, nó hoạt động. Vì vậy, đó là hai xung đột duy nhất tôi đã tìm thấy giữa các nhóm pinax-project và 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

Sự khác biệt giữa postgresql và cơ sở dữ liệu khác là quan trọng. Nếu bạn đang sử dụng phần phụ trợ SQLite, điều đó sẽ cho phép bạn chỉ cần sao chép tệp cơ sở dữ liệu để tái sử dụng ở nhiều vị trí. Sau đó, bạn có thể có một dự án 1,6 và một dự án 1,7, báo cáo cho cùng một tập tin mà không cần phải nâng cấp và/hoặc hạ cấp tất cả các thời gian.

Các vấn đề liên quan