Django报错Apps aren't loaded yet(__init__.py中导入了尚未加载的东西)

本文深入解析了在使用Django框架时遇到的AppRegistryNotReady错误,详细阐述了错误出现的原因及解决步骤。核心在于避免在__init__.py文件中提前导入models模块,遵循Django的应用加载流程。
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

现象:无论是执行runserver还是migrate等命令,均出现以上的错误信息。

问题原因:应用的路径下的__init__.py中写下了import models的内容。

 

Django文档中对applications加载的描述:

django.setup()负责application注册表的初始化

application注册表的初始化需要三个过程,

第一个过程是从INSTALLED_APP中导入每一个内容,这个过程中代码不应该导入任何models,即使是间接的导入。
第二个过程Django尝试导入models中的子模块,并且必须通过models.py和models/__init__.py
第三个过程是调用每个application的ready()方法

 

特别感谢https://www.liangzl.com/get-article-detail-1704.html分享的解决方法

python manage.py migrate Traceback (most recent call last): File "manage.py", line 22, in <module> main() File "manage.py", line 18, in main execute_from_command_line(sys.argv) File "/root/oscar/lib/python3.8/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "/root/oscar/lib/python3.8/site-packages/django/core/management/__init__.py", line 382, in execute settings.INSTALLED_APPS File "/root/oscar/lib/python3.8/site-packages/django/conf/__init__.py", line 102, in __getattr__ self._setup(name) File "/root/oscar/lib/python3.8/site-packages/django/conf/__init__.py", line 89, in _setup self._wrapped = Settings(settings_module) File "/root/oscar/lib/python3.8/site-packages/django/conf/__init__.py", line 217, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 671, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 848, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/root/oscar/frobshop/frobshop/settings.py", line 188, in <module> path('admin/', admin.site.urls), File "/root/oscar/lib/python3.8/site-packages/django/utils/functional.py", line 266, in inner self._setup() File "/root/oscar/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 595, in _setup AdminSiteClass = import_string(apps.get_app_config("admin").default_site) File "/root/oscar/lib/python3.8/site-packages/django/apps/registry.py", line 156, in get_app_config self.check_apps_ready() File "/root/oscar/lib/python3.8/site-packages/django/apps/registry.py", line 138, in check_apps_ready raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
06-14
Traceback (most recent call last): File "D:\hyx_medical\manage.py", line 11, in <module> from backend.models import ImageTask File "D:\hyx_medical\backend\models.py", line 2, in <module> from django.contrib.auth.models import User File "D:\Miniconda3\envs\523\lib\site-packages\django\contrib\auth\models.py", line 3, in <module> from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager File "D:\Miniconda3\envs\523\lib\site-packages\django\contrib\auth\base_user.py", line 57, in <module> class AbstractBaseUser(models.Model): File "D:\Miniconda3\envs\523\lib\site-packages\django\db\models\base.py", line 129, in __new__ app_config = apps.get_containing_app_config(module) File "D:\Miniconda3\envs\523\lib\site-packages\django\apps\registry.py", line 260, in get_containing_app_config self.check_apps_ready() File "D:\Miniconda3\envs\523\lib\site-packages\django\apps\registry.py", line 138, in check_apps_ready raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. PS D:\hyx_medical> python manage.py runserver Traceback (most recent call last): File "D:\hyx_medical\manage.py", line 11, in <module> from backend.models import ImageTask File "D:\hyx_medical\backend\models.py", line 2, in <module> from django.contrib.auth.models import User File "D:\Miniconda3\envs\523\lib\site-packages\django\contrib\auth\models.py", line 3, in <module> from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager File "D:\Miniconda3\envs\523\lib\site-packages\django\contrib\auth\base_user.py", line 57, in <module> class AbstractBaseUser(models.Model): File "D:\Miniconda3\envs\523\lib\site-packages\django\db\models\base.py", line 129, in __new__ app_config = apps.get_containing_app_config(module) File "D:\Miniconda3\envs\523\lib\site-packages\django\apps\registry.py", line 260, in get_containing_app_config self.check_apps_ready() File "D:\Miniconda3\envs\523\lib\site-packages\django\apps\registry.py", line 137, in check_apps_ready settings.INSTALLED_APPS File "D:\Miniconda3\envs\523\lib\site-packages\django\conf\__init__.py", line 102, in __getattr__ self._setup(name) File "D:\Miniconda3\envs\523\lib\site-packages\django\conf\__init__.py", line 82, in _setup raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
最新发布
06-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值