执行python manage.py crontab add时出现django.utils.importlib模块缺失错误
问题解决:ModuleNotFoundError: No module named 'django.utils.importlib'
问题根源
报错是因为你使用的django-crontab版本过旧,它依赖的django.utils.importlib模块在Django 3.0及以上版本中已被移除(Python 3.x已内置importlib,Django不再封装该模块)。
解决方案
方案1:升级/安装兼容版本的django-crontab
- 先确认你的Django版本:
python -m django --version
- 安装适配当前Django版本的
django-crontab:- 对于Django 3.x/4.x/5.x,直接安装最新版即可:
pip install --upgrade django-crontab- 若需指定版本,可安装0.7.1及以上版本(该版本已修复importlib依赖问题):
pip install django-crontab==0.7.1 - 重新执行命令测试:
python manage.py crontab add
方案2:手动修改django-crontab源码(临时应急方案)
如果暂时无法升级包,可直接修改依赖文件:
- 找到
django_crontab的安装目录下的crontab.py文件,路径为:/home/trademaj/virtualenv/public_html/city/3.8/lib/python3.8/site-packages/django_crontab/crontab.py - 打开文件,将第13行的:
from django.utils.importlib import import_module
替换为:
from importlib import import_module
- 保存文件后重新执行
python manage.py crontab add
额外验证
确保你的INSTALLED_APPS中已正确添加django_crontab,且CRONJOBS配置路径无误(你的配置看起来是正确的)。
内容的提问来源于stack exchange,提问作者Anik Saha
相关产品推荐
相关产品推荐

