You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已添加django.contrib.admin仍报KeyError: 'admin'错误求助

Django项目中admin应用不存在的排查与解决

问题描述

已在settings.py的INSTALLED_APPS中添加'django.contrib.admin',但执行python manage.py makemigrations或启动Daphne服务器时,均报错LookupError: No installed app with label 'admin'。

当前INSTALLED_APPS配置

INSTALLED_APPS = [
    # Django Apps
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
]

报错信息(以makemigrations为例)

(env) PS C:\Users\inr69\Documents\GitHub\afreebird_website_3.0> python manage.py makemigrations
C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\config\settings
C:\Users\inr69\Documents\GitHub\afreebird_website_3.0
LOADING: C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\.env
ENV FILE LOADED
Traceback (most recent call last):
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\apps\registry.py", line 158, in get_app_config
    return self.app_configs[app_label]
           ~~~~~~~~~~~~~~~~^^^^^^^^^^^
KeyError: 'admin'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\manage.py", line 17, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\core\management\__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\core\management\__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\core\management\base.py", line 413, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\core\management\base.py", line 454, in execute
    self.check()
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\core\management\base.py", line 486, in check
    all_issues = checks.run_checks(
                 ^^^^^^^^^^^^^^^^^^
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\core\checks\registry.py", line 88, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\core\checks\urls.py", line 136, in check_custom_error_handlers
    handler = resolver.resolve_error_handler(status_code)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\urls\resolvers.py", line 732, in resolve_error_handler
    callback = getattr(self.urlconf_module, "handler%s" % view_type, None)
                       ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\utils\functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\urls\resolvers.py", line 711, in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\inr69\.pyenv\pyenv-win\versions\3.12.8\Lib\importlib\__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\config\urls.py", line 9, in <module>
    path('afbadmin/', admin.site.urls),
                      ^^^^^^^^^^^^^^^
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\utils\functional.py", line 251, in inner
    self._setup()
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\contrib\admin\sites.py", line 605, in _setup
    AdminSiteClass = import_string(apps.get_app_config("admin").default_site)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\inr69\Documents\GitHub\afreebird_website_3.0\env\Lib\site-packages\django\apps\registry.py", line 165, in get_app_config
    raise LookupError(message)
LookupError: No installed app with label 'admin'.

已尝试的无效操作

  • 删除所有迁移文件
  • 删除所有__pycache__文件
  • 给模型添加app标签

解决方案

从报错栈可以看到,问题出在加载URL配置时,admin.site.urls尝试获取admin应用配置失败,以下是针对性排查步骤:

1. 验证INSTALLED_APPS实际加载情况

  • 检查settings.py中INSTALLED_APPS的语法:确认没有遗漏逗号、引号错误,或被条件判断语句意外排除。
  • 在settings.py末尾添加print(INSTALLED_APPS),执行python manage.py shell查看输出,确认'django.contrib.admin'确实在列表中。
  • 执行python manage.py diffsettings | grep INSTALLED_APPS,查看系统实际生效的配置是否包含admin应用。

2. 调整URL配置的加载时机

  • 临时注释urls.py中path('afbadmin/', admin.site.urls)这一行,执行makemigrations,如果不再报错,说明问题和admin URL的加载顺序有关:
    • 将admin的URL配置移到urlpatterns的最后
    • 或使用延迟导入方式:
      from django.urls import path
      from django.utils.module_loading import autodiscover_modules
      
      urlpatterns = [
          # 其他URL配置
      ]
      
      autodiscover_modules('admin')
      import django.contrib.admin as admin
      urlpatterns += [
          path('afbadmin/', admin.site.urls),
      ]
      

3. 排查环境与配置加载逻辑

  • 确认.env文件中没有设置DJANGO_SETTINGS_MODULE等变量,导致加载了错误的settings.py文件。
  • 检查虚拟环境中Django安装是否完整:执行pip show django查看版本,尝试重新安装:pip uninstall django && pip install django。

4. 修复ASGI配置(针对Daphne启动失败)

  • 确保config/asgi.py中正确初始化Django环境,避免提前导入依赖admin的模块:
    import os
    from django.core.asgi import get_asgi_application
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
    application = get_asgi_application()
    

内容的提问来源于stack exchange,提问作者Hoko L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:09:52