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

Python3.9 AWS Lambda因pyjwt[crypto]依赖GLIBC缺失报错求助

问题:AWS Lambda Python 3.9 部署时 GLIBC 版本不兼容错误

运行Python 3.9版本的AWS Lambda时出现以下错误:

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /var/task/cryptography/hazmat/bindings/_rust.abi3.so)
Traceback (most recent call last):

已执行的部署步骤:

  • 创建Dockerfile,基于Ubuntu镜像安装Python3.9、依赖库,通过pip将pyjwt[crypto]==2.6.0、pymongo[srv]==4.3.3安装到指定目录并打包
  • 将容器内的package.zip复制到MacOS主机,添加lambda_function.py后通过boto3上传

尝试添加指定平台的cryptography安装命令时,出现错误:

> [12/14] RUN pip install --platform --platform manylinux2014_x86_64 --implementation cp --python 3.9 --only-binary=:all: --upgrade --target /home/packages cryptography:                                                       
#19 3.185 ERROR: Could not find a version that satisfies the requirement manylinux2014_x86_64 (from versions: none)
#19 3.186 ERROR: No matching distribution found for manylinux2014_x86_64

需求:保留zip上传方式,需明确问题原因及解决办法。


问题原因

  1. GLIBC版本不匹配:AWS Lambda的Python 3.9运行环境基于Amazon Linux 2,系统自带的GLIBC版本为2.26。而使用Ubuntu镜像编译的cryptography依赖GLIBC 2.28,导致Lambda运行时无法找到对应版本的系统库,触发导入错误。
  2. pip命令语法错误:重复使用--platform参数,导致pip将manylinux2014_x86_64误认为是需要安装的包名,因此报错找不到匹配版本。

解决办法(均支持zip上传方式)

方案1:使用Lambda兼容的镜像编译依赖(推荐)

改用与Lambda运行环境一致的镜像编译依赖,确保系统库版本匹配:

  1. 使用官方Lambda Python 3.9镜像作为Docker基础镜像,示例Dockerfile:
FROM public.ecr.aws/lambda/python:3.9

WORKDIR /home/packages

# 将依赖安装到指定目录
RUN pip install pyjwt[crypto]==2.6.0 pymongo[srv]==4.3.3 --target /home/packages

# 打包依赖目录
RUN zip -r package.zip /home/packages
  1. 构建容器并将package.zip复制到本地:
docker build -t lambda-deps .
docker run --rm -v $(pwd):/host lambda-deps cp /home/packages/package.zip /host/
  1. 将lambda_function.py添加到package.zip根目录,重新打包后通过boto3上传即可。

方案2:修正pip命令,安装兼容的预编译包

修正pip平台参数的语法错误,强制下载适配manylinux2014的预编译包(这类包兼容GLIBC 2.17+,符合Amazon Linux 2要求):

pip install --platform manylinux2014_x86_64 --implementation cp --python-version 3.9 --only-binary=:all: --upgrade --target /home/packages pyjwt[crypto]==2.6.0 pymongo[srv]==4.3.3 cryptography

执行该命令后,将生成的依赖目录打包,添加lambda_function.py后上传。

方案3:降级cryptography到兼容版本

查找并安装不需要GLIBC 2.28的cryptography旧版本(如38.0.4及以下,需自行验证兼容性):

pip install pyjwt[crypto]==2.6.0 pymongo[srv]==4.3.3 cryptography==38.0.4 --target /home/packages

⚠️ 注意:降级可能引入安全漏洞,仅作为临时解决方案,长期建议使用方案1或2。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:38