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

Mac虚拟环境下pyJWT使用RS384编码报算法不存在错误问询

问题描述
  • 原Windows环境使用pyJWT无异常,更换Mac设备后,基于Python 3.9、PyCharm搭配虚拟环境开发,尝试生成RS384算法编码的JWT时出现报错
  • 查阅pyJWT官方说明,RS384属于官方支持算法,相同逻辑代码此前在Windows设备可正常运行
  • 虚拟环境创建后通过pip3安装pyJWT,运行代码触发报错:NotImplementedError: Algorithm 'RS384' could not be found. Do you have cryptography installed?
  • 最初认为pyJWT会自动拉取对应依赖,报错后手动安装cryptography库,核查pip3 list输出、PyCharm虚拟环境已安装库列表,均显示相关依赖已安装,但问题未解决,运行最简测试代码仍复现报错

测试代码如下:

import jwt
encoded = jwt.encode({"some": "payload"}, "secret", algorithm="RS384")
print(encoded)

相关参考截图:

  • 错误截图:RS384算法缺失报错
  • pip3包列表截图:pip3已安装依赖列表
  • PyCharm环境配置截图:PyCharm虚拟环境解释器配置
排查方向与解决方案
  • 排查包冲突问题
    PyPI存在同名的jwt第三方包,和官方维护的PyJWT完全不兼容,如果之前执行过pip3 install jwt,就会出现依赖识别异常。先执行命令清理所有冲突包:
    pip3 uninstall -y jwt PyJWT cryptography
    清理完成后,安装带crypto扩展的官方PyJWT版本,会自动匹配兼容的cryptography版本:
    pip3 install pyjwt[crypto]

  • 排查解释器路径不匹配问题
    Mac环境下PyCharm常出现终端pip安装路径和项目实际运行的解释器路径不一致的问题:终端用全局pip3装了包,但项目虚拟环境里没有对应依赖,哪怕pip list能看到包,实际运行环境没加载。
    排查方式:在测试代码开头加入如下代码,打印当前运行环境的Python解释器绝对路径:

    import sys
    print(sys.executable)
    

    复制打印出的解释器路径,用该解释器直接调用pip安装依赖,例如打印路径为/Users/yourname/project/venv/bin/python,则执行:
    /Users/yourname/project/venv/bin/python -m pip install pyjwt[crypto]
    禁止直接用全局pip3安装依赖,避免包装到非当前运行的环境中。

  • 排查cryptography库加载异常问题
    Mac环境如果缺少底层编译依赖,cryptography可能出现安装残缺的情况:pip列表能看到包,但实际RSA相关模块无法导入。
    排查方式:在当前运行环境执行如下导入测试:

    from cryptography.hazmat.primitives.asymmetric import rsa
    

    如果导入报错,先通过homebrew安装底层依赖:
    brew install openssl rust
    安装完成后强制重装cryptography:
    pip install --force-reinstall cryptography

  • 后续注意事项
    解决算法找不到的报错后,需要注意RS384是RSA非对称算法,不能用示例里的普通字符串"secret"作为密钥,需要传入符合格式要求的RSA私钥才能正常生成JWT。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:48:19