Django项目已安装djangorestframework-simplejwt仍报模块不存在错误求助
问题排查与解决方案
核心报错根源定位
你遇到的ModuleNotFoundError: No module named 'rest_framework_simplejwt'本质是两个层面的问题,按排查优先级从高到低操作即可解决:
1. 解决模块导入失败的环境不匹配问题
pip freeze能看到对应包不代表包已经安装到了你运行runserver用的Python解释器环境里,这是最常见的导入失败诱因:
- 在执行
python manage.py runserver的同一终端窗口,先执行以下命令确认当前运行的Python解释器路径:python -c "import sys; print(sys.executable)" - 再执行
pip show djangorestframework-simplejwt,检查输出的Location路径对应的Python环境,和上面打印的解释器路径是否一致。- 如果路径不一致,说明你之前pip安装的包被装到了其他Python环境下(比如全局Python、未激活的虚拟环境、多版本Python共存的其他版本目录),需要直接用当前项目使用的解释器来安装依赖,执行命令:
[刚才打印的解释器全路径] -m pip install djangorestframework-simplejwt==4.6.0 - 安装完成后可以执行
python -c "import rest_framework_simplejwt",如果没有报错就说明模块已经可以被正常导入了。
- 如果路径不一致,说明你之前pip安装的包被装到了其他Python环境下(比如全局Python、未激活的虚拟环境、多版本Python共存的其他版本目录),需要直接用当前项目使用的解释器来安装依赖,执行命令:
2. 修复依赖版本兼容冲突
就算解决了导入问题,你当前的版本栈依然存在不兼容问题,会导致后续运行报错:
- 你当前环境的PyJWT版本是2.0.1,和djangorestframework-simplejwt 4.6.0存在API不兼容:simplejwt 4.6.0 官方要求的PyJWT版本范围是
>=1.7.1,<2.0.0,PyJWT 2.x 版本对核心验证逻辑做了不向后兼容的修改,会导致令牌生成、验证环节报错。 - 适配你现有Django3.0、DRF3.10版本栈的兼容依赖安装命令为:
python -m pip install "PyJWT==1.7.1" "djangorestframework-simplejwt==4.6.0"
无效操作认知修正
- 不需要在settings.py顶部手动添加
import rest_framework_simplejwt语句,模块导入失败的问题不会因为写了这行代码得到解决。 - Simple JWT不需要强制添加到INSTALLED_APPS配置项中:该库没有需要Django框架加载的应用级启动逻辑,加不加入INSTALLED_APPS都不影响认证类的正常调用。
- 你当前写在
REST_FRAMEWORK配置里的JWTAuthentication路径是完全正确的,不需要修改。
内容的提问来源于stack exchange,提问作者Jake Mulhern
相关产品推荐
相关产品推荐

