给AWS Lambda函数层添加PyJWT后仍报错:找不到jwt模块
解决AWS Lambda层添加PyJWT后仍报“no module named jwt”的问题
检查层ZIP包的目录结构
Lambda对Python层的目录结构有严格要求,库必须放在python/lib/pythonX.X/site-packages/路径下(X.X对应Lambda运行时的Python版本,比如3.9、3.10)。如果你的ZIP包直接将jwt文件夹放在根目录,Lambda无法识别到该模块。
修复步骤:
- 在CloudShell的虚拟环境中安装PyJWT时,指定目标路径:
请将pip install PyJWT -t python/lib/python3.9/site-packages/3.9替换为你的Lambda函数使用的Python版本。 - 将整个
python文件夹打包为ZIP文件,而非单独打包site-packages内的内容。
确保Python版本完全匹配
你在CloudShell中安装PyJWT所用的Python版本,必须与Lambda函数的运行时版本一致。例如:
- 若Lambda运行时为Python 3.10,需在CloudShell中执行以下命令创建对应环境并安装:
python3.10 -m venv myenv source myenv/bin/activate pip install PyJWT -t python/lib/python3.10/site-packages/
确认层已正确关联到Lambda函数
进入Lambda函数的配置页面,切换至「层」标签页,检查添加的PyJWT层是否已出现在列表中,且状态为「已添加」。若你更新了层的版本,需确保Lambda关联的是最新版本。
验证代码导入语句
代码中需使用import jwt进行导入,而非import PyJWT(PyJWT是包的发布名称,实际可导入的模块名为jwt)。若导入语句错误,同样会触发模块找不到的报错。
检查ZIP包内容
上传至S3前,可在CloudShell中执行以下命令验证ZIP包结构:
unzip -l your-layer.zip
输出结果中应包含python/lib/pythonX.X/site-packages/jwt这类路径,而非直接显示jwt/。
内容的提问来源于stack exchange,提问作者Marwenv1
相关产品推荐
相关产品推荐

