Lambda导入模块报错:无法导入embedding_search_handler,相对导入超出顶级包
Lambda Runtime.ImportModuleError 问题排查与解决
错误核心原因
你代码中使用了相对导入语法(如from .xxx import yyy或from ..xxx import yyy),但Lambda执行环境会将你的代码包视为顶级模块,这类相对导入会超出顶级包范围,触发导入错误。
解决步骤
替换相对导入为绝对导入
把所有相对导入语句改成绝对导入形式。例如:- 原相对导入:
from .es_client import connect_es - 修改后:
from es_client import connect_es(前提是es_client.py与embedding_search_handler.py在同一目录)
若依赖模块不在当前目录,需确保它们被包含在打包的根目录中,再用绝对路径导入。
- 原相对导入:
检查打包目录结构
确保打包的zip文件根目录直接包含embedding_search_handler.py及所有依赖模块,避免嵌套子目录结构。正确的打包结构示例:lambda-package/ ├── embedding_search_handler.py ├── es_client.py └── embedding_utils.py打包时直接压缩该目录下的所有文件,不要将
lambda-package目录本身加入压缩包。验证Handler配置
确认Lambda控制台中Handler设置为embedding_search_handler.lambda_handler,其中embedding_search_handler是文件名(不带.py后缀),lambda_handler是文件中定义的处理函数名,两者不要拼写错误。本地预测试
在本地直接运行python embedding_search_handler.py,或使用Lambda本地测试工具(如aws-sam-cli),提前排查导入问题,减少部署调试次数。
内容的提问来源于stack exchange,提问作者reallymemorable
相关产品推荐
相关产品推荐

