升级Django及依赖包后启动报错No module named 'django.contrib.wagtail'求助
Wagtail升级后Django启动报错解决方案
根因说明
ModuleNotFoundError: No module named 'django.contrib.wagtail'为配置路径错误:Wagtail是独立第三方应用,不属于Django内置django.contrib模块组,该路径完全不合法找不到wagtail.core.middleware模块错误触发原因分为三类:当前运行虚拟环境未正确安装Wagtail 2.14.1、MIDDLEWARE配置拼写错误、Wagtail版本路径不匹配makemigrations、migrate命令仅加载与模型相关的应用配置,不会校验完整的中间件、WSGI栈配置,因此配置错误不会在这两个步骤触发,仅在启动服务时抛出异常
分步修复操作
- 确认运行环境依赖匹配
执行pip freeze | grep Wagtail验证输出为Wagtail==2.14.1,确认依赖安装在项目当前使用的虚拟环境中,避免全局环境/多虚拟环境冲突 - 修正INSTALLED_APPS配置
删除所有django.contrib.wagtail开头的配置项,Wagtail 2.14.1版本对应的标准配置前缀均为wagtail.,参考配置如下:INSTALLED_APPS = [ # 其他Django内置应用 'wagtail.contrib.forms', 'wagtail.contrib.redirects', 'wagtail.embeds', 'wagtail.sites', 'wagtail.users', 'wagtail.snippets', 'wagtail.documents', 'wagtail.images', 'wagtail.search', 'wagtail.admin', 'wagtail.core', # 其他自定义应用 ] - 修正MIDDLEWARE配置
核对中间件列表中Wagtail相关配置,2.14.1版本默认需要的中间件路径为wagtail.core.middleware.SiteMiddleware、wagtail.contrib.redirects.middleware.RedirectMiddleware,确认配置无拼写错误、无多余前缀 - 验证修复结果
配置修正后先执行python manage.py check校验全量配置,无报错后再执行python manage.py runserver启动服务即可
内容的提问来源于stack exchange,提问作者Swetha Moorthi
相关产品推荐
相关产品推荐

