Python 3.9环境下AWS Lambda Layer集成LangChain的问题排查
AWS Lambda Python3.9层LangChain依赖问题解决指南
问题场景
要为AWS Lambda构建基于Python3.9的Layer,该Lambda需调用langchain.prompts、langchain.retrievers、langchain.llms、langchain.chains模块。由于LangChain依赖的pydantic存在兼容问题,必须固定架构与Python版本。
尝试方案1及问题
requirements.txt内容:
langchain[all]
执行安装命令:
pip install -r requirements.txt --platform manylinux1x86_64 --python-version 39 --only-binary=:all:
该命令避免了pydantic兼容问题,但Lambda调用时触发错误:
Can not import PrompTemplate from langchain.prompts ... Runtime Import Module
尝试方案2及问题
修改requirements.txt为:
langchain langchain.prompts langchain.retrievers langchain.llms.bedrock langchain.chains
执行相同pip安装命令时失败,报错:
Can not find a version that satisfies the requirement langchain.prompts ( from version:none)
核心解决思路
先解决方案2的安装失败问题
langchain.prompts、langchain.retrievers这类是LangChain主包的子模块,并非独立的PyPI包,不需要单独在requirements.txt中声明,只需安装主包langchain即可,所有子模块会随主包一并安装。
再解决方案1的导入错误问题
- 检查代码拼写:报错中的
PrompTemplate是拼写错误,正确应为PromptTemplate,确认Lambda代码中导入语句为:from langchain.prompts import PromptTemplate - 规范Layer目录结构:Lambda Layer的Python依赖必须放在
python/lib/python3.9/site-packages/目录下,安装时需指定目标路径:
之后将pip install -r requirements.txt --platform manylinux1x86_64 --python-version 39 --only-binary=:all: -t python/lib/python3.9/site-packages/python目录打包为zip文件上传作为Layer。 - 固定LangChain版本:为避免版本兼容问题,在requirements.txt中指定稳定兼容的版本,例如:
该版本与Python3.9、pydantic(要求<2.0.0,>=1.10.7)兼容度较好。langchain==0.0.289 - 验证依赖版本:安装完成后可执行
pip freeze查看依赖列表,确认pydantic版本处于LangChain要求的范围内,避免冲突。
总结
- 仅需在requirements.txt中声明
langchain(建议固定版本),无需单独列出子模块 - 安装时严格指定平台、Python版本与二进制包选项,避免本地环境干扰
- 确保Layer目录结构符合Lambda要求,依赖放置路径正确
- 检查代码中的导入语句拼写,避免低级错误
内容的提问来源于stack exchange,提问作者MasterOfTheHouse
相关产品推荐
相关产品推荐

