升级Django至5.2.7引发rest_framework_simplejwt导入错误:无法导入utc
解决Django 5.2.7中rest_framework_simplejwt导入'utc'失败的问题
问题原因
Django 5.0及以上版本已移除django.utils.timezone.utc这个API,而你当前使用的djangorestframework_simplejwt==5.2.0版本仍依赖该废弃接口,导致执行python manage.py check时触发导入错误。
解决方案
升级djangorestframework_simplejwt到兼容版本
- 修改
requirements.txt中的版本号,将djangorestframework_simplejwt==5.2.0替换为:
(5.3.0及以上版本已适配Django 5.x的时区API变更)djangorestframework_simplejwt>=5.3.0 - 执行命令更新依赖:
pip install --upgrade djangorestframework_simplejwt
- 修改
验证修复效果
重新运行python manage.py check,确认错误提示消失;也可以启动项目测试JWT认证功能是否正常工作。
临时替代方案(不推荐)
如果暂时无法升级依赖,可以手动修改rest_framework_simplejwt源码中的导入语句:
找到所有from django.utils.timezone import utc的代码行,替换为:
from datetime import UTC # 或者使用zoneinfo(Python 3.9+支持) import zoneinfo utc = zoneinfo.ZoneInfo("UTC")
但这种方法会在后续依赖更新时被覆盖,仅作为临时应急使用,优先推荐升级版本。
内容的提问来源于stack exchange,提问作者Charmi
相关产品推荐
相关产品推荐

