Docker部署AWS Lambda含LangChain依赖报错:找不到langchain模块
问题:AWS Lambda容器部署后无法导入LangChain模块
容器创建与Lambda函数部署均正常,但执行时出现如下错误:
"errorMessage": "Unable to import module 'handler': No module named 'langchain'"
Dockerfile内容
FROM public.ecr.aws/lambda/python:3.9 COPY requirements.txt ./ COPY handler.py ./ # for chromaDB RUN yum install gcc-c++ -y RUN pip install --no-cache-dir -r requirements.txt # CPU only version of pytorch (smaller) RUN pip install --no-cache-dir torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu CMD [ "handler.handler" ]
requirements.txt内容
transformers langchain chromadb pypdf xformers sentence_transformers InstructorEmbedding boto3
handler.py内容
import sys print("SYS-Path:") print(sys.path) import json import torch from langchain.document_loaders import ( AmazonTextractPDFLoader, DirectoryLoader, TextLoader ) from langchain.vectorstores import Chroma # langchain/chromaDB logic here ... def handler(event, context): print(event) print(context) body = json.loads(event.get('body')) return { "statusCode": 200, "headers": { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', "Access-Control-Allow-Credentials": True }, "body": { "result": "ok" } }
可能的原因及解决办法
- 依赖安装路径不匹配:Lambda Python运行时默认从
/var/task目录加载模块,默认pip安装可能会把包放到其他路径,导致无法识别。修改pip安装命令,指定安装目录:RUN pip install --no-cache-dir -r requirements.txt -t /var/task RUN pip install --no-cache-dir torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu -t /var/task - 镜像缓存导致依赖未更新:如果之前构建过镜像,缓存可能保留了未安装langchain的旧层。执行
docker build --no-cache .强制重新构建,确保依赖完全安装。 - 检查依赖安装日志:构建镜像时留意pip输出,确认langchain及相关依赖是否成功安装。若有编译错误(比如部分包依赖系统库缺失),需先解决对应问题,再重新安装。
- 手动添加模块路径:如果sys.path中没有
/var/task,可在handler.py开头手动添加:import sys sys.path.append('/var/task')
内容的提问来源于stack exchange,提问作者Benvorth
相关产品推荐
相关产品推荐

