Serverless本地运行Lambda函数报No module named 'handler'错误求助
问题解决说明
该报错与Python安装无关,核心原因是你混淆了Node.js全局依赖和Python Lambda运行的模块要求:你全局安装的handler属于Node.js生态包,无法被Python运行时识别,Python Lambda要求你的项目本地存在对应的handler.py模块文件。
排查步骤
- 确认执行
serverless offline命令的工作目录,必须和serverless.yml所在目录保持一致 - 检查项目根目录下是否存在
handler.py文件,若你在serverless.yml中配置的函数handler字段为handler.xxx,就必须存在该文件 - 核对
serverless.yml的函数配置格式是否正确,示例如下:functions: testFunc: handler: handler.entry # handler对应handler.py,entry是你在handler.py中定义的入口函数名 runtime: python3.9 plugins: - serverless-offline - serverless-python-requirements - Python项目依赖不要全局安装,在项目根目录新建
requirements.txt写入所需Python依赖,由serverless-python-requirements插件统一管理加载。
快速验证方法
你可以在项目根目录新建测试用handler.py,写入如下内容后重新运行serverless offline验证:
import json def entry(event, context): return { "statusCode": 200, "body": json.dumps({"status": "success"}) }
同时将serverless.yml中对应函数的handler字段修改为handler.entry即可。
内容的提问来源于stack exchange,提问作者Ramiro Gioia
相关产品推荐
相关产品推荐

