Django nâng cấp lên 1.9 lỗi “AppRegistryNotReady: Ứng dụng chưa được tải.”


93

Khi nâng cấp lên django 1.9 từ 1.8, tôi gặp lỗi này. Tôi đã kiểm tra câu trả lời cho các câu hỏi tương tự, nhưng tôi không nghĩ rằng đây là vấn đề với bất kỳ gói hoặc ứng dụng nào của bên thứ ba.

Traceback (most recent call last):
File "manage.py", line 10, in <module> execute_from_command_line(sys.argv)
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
utility.execute()
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 342, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 176, in fetch_command
commands = get_commands()
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/utils/lru_cache.py", line 100, in wrapper
result = user_function(*args, **kwds)
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 71, in get_commands
for app_config in reversed(list(apps.get_app_configs())):
File "/home/kishore/.virtualenvs/andone/local/lib/python2.7/site-packages/django/apps/registry.py", line 137, in get_app_configs
self.check_apps_ready()
File "/home/kishore/.virtualenvs/andone/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.

Tôi đã sửa đổi Ứng dụng đã cài đặt cho 'django.contrib.auth'.


1
bạn đang sử dụng bất kỳ ứng dụng của bên thứ ba? Vui lòng chia sẻ cài đặt của
bạn.py

Tôi đang sử dụng nhiều ứng dụng của bên thứ ba, nhưng tôi tin rằng lỗi này phát sinh từ "django / apps / registry.py" chứ không phải từ bất kỳ ứng dụng nào khác trong gói trang web.
Kishore K

1
Tôi đã gặp phải vấn đề tương tự với các dạng django-giòn vì thư viện chưa hỗ trợ 1.9. Vì vậy, đây có thể là một ứng dụng không được hỗ trợ.
utkbansal

1
Tôi không sử dụng gói đó. Xin lỗi Nếu tôi sai, nếu nó liên quan đến bất kỳ gói nào, dấu vết sẽ chỉ đến ứng dụng đó trong các gói trang web, phải không?
Kishore K

Cùng payu không hỗ trợ 1.9
GrvTyagi

Câu trả lời:


125

Cố gắng thêm dòng này vào đầu tệp cài đặt của bạn:

import django
django.setup()

Và nếu điều này không giúp bạn hãy thử xóa từng ứng dụng của bên thứ ba khỏi danh sách ứng dụng đã cài đặt của mình.


8
Tôi đã thử nhưng gặp lỗi này "django.core.exceptions.ImproperlyConfigured: Cài đặt SECRET_KEY không được để trống." Mặc dù tôi đã có SECRET_KEY trong tệp cài đặt.
Kishore K

11
Hãy thử tuyên bố SECRET_KEY TRƯỚC dòng đề cập, một cái gì đó như: SECRET_KEY = nhập khẩu 'MY SECRET KEY' django django.setup () nó làm việc cho tôi .... bây giờ với lỗi khác :)
Duda Nogueira

1
Đây là một câu trả lời tuyệt vời cho câu hỏi: "Làm cách nào để truy cập các đối tượng mô hình Django từ một tập lệnh độc lập?" :-) Trước khi chạy đoạn mã trên, bạn cần thực hiện: os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "your.settings").
AdvilUser

1
Không hoạt động trên cài đặt nhưng hoạt động trên tập lệnh độc lập của tôi. Ngoại lệ này cũng xảy ra nếu bạn quên gọi django.setup () trong một tập lệnh Python độc lập. docs.djangoproject.com/en/1.10/ref/appices/…
André Duarte

30
django.setup()là để sử dụng trong các tập lệnh độc lập. Bạn không nên đặt nó trong cài đặt
Alasdair

37

Tôi muốn một hàm tùy chỉnh được viết trên một trong các __init__.pytệp mô hình của mình . Nó đã gây ra lỗi. Khi tôi chuyển chức năng này khỏi __init__.pynó hoạt động.


3
Tương tự ở đây, di chuyển nó cũng cố định.
Brachamul

Cần lưu ý rằng các chức năng được nhận xét trong tệp này cũng có thể gây ra lỗi này.
B-Tron of the Autobots

25

Vấn đề của tôi là tôi đã cố nhập mô hình Django trước khi gọi django.setup()

Điều này đã làm việc cho tôi:

import django
django.setup()

from myapp.models import MyModel

Tập lệnh trên nằm trong thư mục gốc của dự án.


Tôi đã gặp phải vấn đề này khi chạy một tập lệnh, điều này đã giải quyết được nó.
gần như một người mới bắt đầu,

14

Trong trường hợp của tôi, lỗi xảy ra khi tôi thực hiện python manage.py makemigrationstrênDjango 2.0.6 .

Giải pháp là chạy python manage.py runservervà xem lỗi thực sự (chỉ là một biến môi trường bị thiếu).


13

Lỗi này có thể xảy ra khi bạn đang thêm một ứng dụng trong INSTALLED_APPS trong settings.pytập tin nhưng bạn không có ứng dụng được cài đặt trong máy tính của bạn. Bạn có hai giải pháp:

  1. Install ứng dụng đó sử dụng trình quản lý gói như pip trong ubuntu
  2. Hoặc Nhận xét về ứng dụng đã cài đặt đó trong settings.pytệp

Lỗi này cũng có thể phát sinh nếu bạn không thuộc đối tượng virtual environmentmà bạn có thể đã tạo cho dự án của mình.


5

Hãy thử xóa toàn bộ settings.LOGGINGdictConfig và khởi động lại máy chủ. Nếu điều đó hoạt động, hãy viết lại cài đặt theo tài liệu v1.9.

https://docs.djangoproject.com/en/1.9/topics/logging/#examples


Cảm ơn nó đã hoạt động. Đối với tôi, tôi đang sử dụng các tập tin cài đặt của linux trên windows. Do đó /var/loglogfile tồn tại con đường dint đó đã cho lỗi này
Pratibha

5

Đối với tôi, vấn đề đến từ thực tế là tôi đang nhập một ứng dụng trong INSTALLED_APPSđó chính nó đang nhập một mô hình vào__init__.py tệp

Tôi đã có:

settings.py

INSTALLED_APPS = [
    ...
    'myapp',
    ...
]

myapp.__init__.py

from django.contrib.sites.models import Site

bình luận ra import modelstrong myapp.__init__.pylàm cho nó hoạt động:

# from django.contrib.sites.models import Site

Tôi có vấn đề tương tự. Nhưng tôi cần nhập trong trường hợp của tôi. Bạn làm điều đó như thế nào?
JohnnyQ

Bạn luôn có thể cấu trúc lại để tránh nhập mô hình từ init . Một tùy chọn chắc chắn sẽ hoạt động là cấu trúc lại các tệp nhập ứng dụng của bạn nhưng đó có thể là những thay đổi khá nặng nề. Cuối cùng, đó là những gì tôi phải làm!
Albyorix

Vấn đề tương tự như @JohnnyQ. Hoạt động tốt ở 1.8 nhưng hỏng ở 1.9. Có bất kỳ tài liệu liên quan ở đâu đó xung quanh không? Ngoại lệ phát sinh do nhập Người dùng từ django.contrib.auth.models trong trường hợp của tôi
Vinod

Đã hỏi về điều này trong một câu hỏi riêng tại đây stackoverflow.com/questions/59927122/… và nhận được câu trả lời. Gist, không có cách nào khác ngoài tái cấu trúc
Vinod

4

django.setup () ở trên cùng sẽ không hoạt động khi bạn đang chạy tập lệnh một cách rõ ràng. Sự cố của tôi đã được giải quyết khi tôi thêm phần này vào cuối tệp cài đặt

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
import sys
if BASE_DIR not in sys.path:
    sys.path.append(BASE_DIR)
os.environ['DJANGO_SETTINGS_MODULE'] =  "igp_lrpe.settings"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "igp_lrpe.settings")
import django
django.setup()

Tôi sử dụng vỏ Pycharm và loại import djangodjango.setup(). Vấn đề đã được giải quyết.
Seyed Hasan Mousavi

2

Cho tôi bình luận

'grappelli.dashboard',
'grappelli',

trong INSTALLED_APPS đã hoạt động


Đối với tôi, đó chỉ là tôi vô tình có 'one_third_pary_app,'thay vì 'one_third_pary_app',(lưu ý vị trí của ,)
J0ANMM

2

Tôi gặp lỗi đó khi cố gắng chạy test.py(không phải tập lệnh đầy đủ, tôi không muốn sử dụng python manage.py test)

và phương pháp sau đây đang làm việc cho tôi.

import os
import django
if 'env setting':
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'YourRoot.settings')
    django.setup()
from django.test import TestCase
...

class SomeTest(TestCase):
    def test_one(self):  # <-- Now, I can run this function by PyCharm
        ...

    def test_two(self):
        ...

1

Vấn đề của tôi là: django-reverseion> = 1.8.7, <1.9

đối với django 1.9.7 bạn nên sử dụng: django-reverseion == 1.10.0

Tôi đã nâng cấp django-cms 3.2 lên 3.3 và tìm thấy nó bằng cách nhận xét ứng dụng, sau đó bỏ ghi chú lại.

Câu trả lời chính xác ở đây: https://stackoverflow.com/a/34040556/2837890


1

Vấn đề này cũng được quan sát thấy đối với settings.py không nhất quán vì viết INSTALLED_APPS không chính xác, hãy xác minh xem bạn đã bao gồm đúng các ứng dụng và được phân tách bằng "," hay không.


1

Khi tôi thay đổi phiên bản django của mình thành 1.9, nó không phát sinh lỗi. pip uninstall django pip install django==1.9


1

Tôi đặt Usernhập vào settingstệp để quản lý mã thông báo cuộc gọi còn lại như thế này

# settings.py
from django.contrib.auth.models import User
def jwt_get_username_from_payload_handler(payload):
   ....

JWT_AUTH = {
    'JWT_PAYLOAD_GET_USERNAME_HANDLER': jwt_get_username_from_payload_handler,
    'JWT_PUBLIC_KEY': PUBLIC_KEY,
    'JWT_ALGORITHM': 'RS256',
    'JWT_AUDIENCE': API_IDENTIFIER,
    'JWT_ISSUER': JWT_ISSUER,
    'JWT_AUTH_HEADER_PREFIX': 'Bearer',
}
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
       'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
    ),
}

Bởi vì tại thời điểm đó, Django libs vẫn chưa sẵn sàng. Do đó, tôi đặt hàm importbên trong và nó bắt đầu hoạt động. Hàm cần được gọi sau khi máy chủ được khởi động


0

Trong trường hợp của tôi, một trong các cài đặt của tôi, 'CORS_ORIGIN_WHITELIST' đã được đặt trong tệp settings.py nhưng không có sẵn trong tệp .env của tôi. Vì vậy, tôi khuyên bạn nên kiểm tra cài đặt của mình, đặc biệt là những cài đặt được liên kết với .env


0

Như những người khác đã nói, điều này có thể xảy ra khi bạn chưa cài đặt một ứng dụng được liệt kê trong INSTALLED_APPS .

Trong trường hợp của tôi, manage.pyđã cố gắng ghi lại ngoại lệ, điều này dẫn đến việc cố gắng hiển thị nó không thành công do ứng dụng chưa được khởi chạy. Bằng cách bình luận ra exceptmệnh đề trong manage.pyngoại lệ đã được hiển thị mà không có kết xuất đặc biệt, tránh lỗi khó hiểu.

# Temporarily commenting out the log statement.
#try:
    execute_from_command_line(sys.argv)
#except Exception as e:
#    log.error('Admin Command Error: %s', ' '.join(sys.argv), exc_info=sys.exc_info())
#    raise e

0

Tôi đã thử rất nhiều thứ, nhưng chỉ hạ cấp Django xuống 1.8.18 đã khắc phục sự cố này cho tôi:

pip install django==1.8.18

Đó là một trong những ứng dụng đã cài đặt bị lỗi, nhưng tôi không thể tìm thấy ứng dụng nào.


0

Tôi gặp lỗi đó khi cố chạy:

python manage.py makemigrations

tôi đã thử rất nhiều thứ và nhận ra rằng tôi đã thêm một số tham chiếu vào "settings.py" - "INSTALLED_APPS"

Chỉ cần chắc chắn những gì bạn viết ở đó là chính xác. Sai lầm của tôi là ". Model." thay vì ".app."

Đã sửa lỗi đó và hiện nó đang hoạt động.


-1

Đến bữa tiệc muộn, nhưng grappelli cũng là lý do cho lỗi của tôi. Tôi đã tra cứu phiên bản tương thích trên pypi và phiên bản đó đã sửa lỗi cho tôi.


-1

Thử kích hoạt env ảo. Trong trường hợp của tôi, sử dụng công cụ dòng lệnh git:

source scripts/activate

Giải quyết vấn đề của tôi.


-1

Gặp lỗi này khi cố gắng truy cập các đối tượng mô hình trong apps.py:

class QuizConfig(AppConfig):
name = 'quiz'

def ready(self):
    print('===============> Django just started....')
    questions_by_category = Question.objects.filter(category=2) # <=== Guilty line of code.

Việc cố gắng truy cập Questiontrước khi ứng dụng tải lớp mô hình đã gây ra lỗi cho tôi.


Mô hình có Questionđược xác định trong models.py của AppConfig này không?
Gustavo_fringe

Có, nó được xác định ở đó
Ojonugwa Jude Ochalifu

-2

Nếu các tệp setting.py điền của bạn là chính xác , bạn có thể thử đến các tệp tin management.py hãy tiếp tục gọi danjgo.setup () trong phương thức main. Sau đó chạy management.py, cuối cùng chạy lại dự án, vấn đề có thể biến mất.


-2

Trong mô-đun "quản trị" của gói ứng dụng của bạn, hãy đăng ký tất cả cơ sở dữ liệu được tạo trong mô-đun "mô hình" của gói.

Giả sử bạn có một lớp cơ sở dữ liệu được định nghĩa trong mô-đun "mô hình" là:

class myDb1(models.Model):
    someField= models.Charfiled(max_length=100)

vì vậy bạn phải đăng ký điều này trong mô-đun quản trị như:

from .models import myDb1
admin.site.register(myDb1)

Tôi hy vọng điều này sẽ giải quyết được lỗi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.