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

安装djangorestframework-simplejwt时报PyJWT版本冲突如何解决

排查步骤
  • 校验pip与Python解释器一致性
    分别执行pip -V和which python3,确认两者指向同一环境。多数冲突都是因为升级PyJWT用的是虚拟环境的pip,而运行Django时调用了系统全局的Python解释器,导致加载到系统路径下的旧版本PyJWT。
  • 排查系统级遗留PyJWT包
    执行sudo pip3 list | grep PyJWT检查全局pip安装的包,若输出1.7.1版本,执行sudo pip3 uninstall PyJWT删除全局旧版本。此前卸载的deb包python3-jwt和pip全局安装的PyJWT是两个独立的安装源,不会互相影响。
  • 检查依赖锁定文件
    查看项目根目录下的requirements.txt、poetry.lock、Pipfile等依赖配置文件,确认没有强制指定PyJWT==1.7.1的规则,避免部署时自动回退到旧版本。
  • 定位PyJWT实际加载路径
    在Django项目入口处加入如下代码,启动服务后查看输出的路径,确认加载的是哪个位置的包:
    import jwt
    print(jwt.__file__)
    
    如果输出路径为/usr/lib/python3/dist-packages/jwt,说明仍然加载的是系统级旧包。
解决方案
  • 推荐方案:使用独立虚拟环境部署
    所有项目依赖都安装在独立虚拟环境中,完全隔离系统级包:
    1. 进入项目目录执行python3 -m venv venv创建虚拟环境
    2. 执行source venv/bin/activate激活虚拟环境
    3. 执行pip install djangorestframework-simplejwt重新安装依赖,会自动匹配符合要求的PyJWT 2.x版本
    4. 修改Django服务启动配置(如systemd、uWSGI配置),将Python解释器路径替换为虚拟环境内的路径,示例:/home/your_user/project_dir/venv/bin/python
  • 临时兼容方案:强制覆盖系统级PyJWT
    若不便使用虚拟环境,执行sudo pip3 install --upgrade PyJWT>=2,<3 --force-reinstall直接覆盖系统路径下的旧版本PyJWT。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 18:36:03