如何在AWS Lambda中导入Langchain模块?解决orjson依赖报错
解决AWS Lambda导入Langchain时
orjson.orjson缺失的问题 原因分析
Langchain的部分间接依赖(如pydantic)会调用orjson,而orjson是二进制扩展包,必须匹配Lambda运行时的x86_64架构和对应Python版本才能正常加载。你之前的打包方式可能未处理好该依赖的兼容性。
可行解决方案
方案1:基于Lambda官方镜像打包依赖
这是最可靠的方式,确保依赖完全兼容Lambda环境:
- 拉取对应Python版本的Lambda官方镜像(以Python 3.10为例):
docker pull public.ecr.aws/lambda/python:3.10 - 启动临时容器并挂载本地目录:
docker run -it --rm -v $(pwd):/app public.ecr.aws/lambda/python:3.10 bash - 在容器内将Langchain安装到指定目录:
pip install langchain -t /app/python - 退出容器后,将
python目录压缩为zip包:zip -r langchain-layer.zip python/ - 将该zip包上传为Lambda Layer,关联到你的Lambda函数。
方案2:强制使用纯JSON库替代
如果不需要orjson的性能优势,可让依赖 fallback 到纯Python实现:
- 新建
requirements.txt文件,内容如下:langchain orjson==3.9.10 --no-binary :all: - 按照方案1的容器步骤完成打包,这样会安装纯Python版本的
orjson(或触发依赖切换到标准库json)。
方案3:对齐Lambda运行时版本
检查你的Lambda函数Python运行时版本,确保和打包依赖时使用的Python版本完全一致(比如打包用Python 3.10,Lambda也要设置为Python 3.10),版本不匹配会导致二进制依赖加载失败。
方案4:弃用第三方公开Layer
第三方公开Layer可能存在Python版本、架构不匹配的问题,优先使用自己基于Lambda官方镜像构建的Layer。
内容的提问来源于stack exchange,提问作者Mohil
相关产品推荐
相关产品推荐

