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

使用Python生成GitHub App的JWT时遭遇ValueError: "Could not deserialize key data"错误

使用Python生成GitHub App的JWT时遭遇ValueError: "Could not deserialize key data"错误

看起来你遇到的是密钥解析类的问题,我来帮你排查几个常见的原因和对应的解决办法:


1. 你大概率装错了JWT库!

你执行了pip3 install jwt,但这个是一个和官方推荐的PyJWT无关的第三方包,而GitHub文档里的代码是针对PyJWT(正确包名是pyjwt)编写的。两个库的API虽有相似,但底层密钥处理逻辑差异很大,这是导致解析失败的高频原因。

请卸载错误的库,安装带加密扩展的正确版本:

pip3 uninstall jwt
pip3 install pyjwt[crypto]

2. 检查你的PEM私钥文件格式是否合规

GitHub App下载的私钥是标准RSA私钥格式,请确认:

  • 文件开头必须是-----BEGIN RSA PRIVATE KEY-----,结尾是-----END RSA PRIVATE KEY-----(注意连字符和大小写,不能缺失或写错)
  • 密钥内容没有被截断、添加多余空行/空格,每一行长度应该在64字符左右(最后一行可稍短)
  • 直接打开文件确认无乱码,比如复制私钥时有没有漏行

3. 确认密钥未被加密

如果你的PEM文件里包含DEK-Info字样的行,说明密钥被设置了密码加密。但GitHub App生成的私钥默认是未加密的,若你自行加密了它,需要修改代码添加密码参数:

# 读取密钥时传入密码(注意是字节类型)
signing_key = jwt.jwk_from_pem(pem_file.read(), password=b"你的密钥密码")

或者更简单的方式:去GitHub App设置页面重新下载一个未加密的私钥。

4. 升级依赖库版本

旧版本的cryptography(PyJWT依赖的加密底层库)可能不支持某些密钥格式,建议升级到最新稳定版:

pip3 install --upgrade pyjwt cryptography

5. 验证文件路径是否正确

确保你输入的PEM文件路径是有效的:

  • 如果用相对路径,要确认是相对于脚本运行的目录,而非你的用户根目录
  • 可以先把PEM文件和脚本放在同一个文件夹里,直接输入文件名测试,排除路径错误的可能

备注:内容来源于stack exchange,提问作者Strong Like Bull

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 10:35:34