You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Python Lambda相对导入报错:无已知父包问题排查

问题原因与解决方法

为什么会出现这个错误?

Python的相对导入(比如from . import ...)依赖于模块的包上下文——当前模块必须属于某个包,Python才能识别.对应的层级关系。

在AWS Lambda运行环境中,若你直接将src目录下的文件作为部署包根目录,或是Lambda执行main.py时将其当作顶层脚本而非包内模块处理,此时main.py的__package__属性为空,Python无法识别它属于src包,自然解析不了相对导入,就会抛出这个错误。

解决方法

方法1:调整部署包结构(最推荐)

把src目录下的所有文件(__init__.py、main.py、service.py)直接放到部署包的根目录,不再保留src子目录。

此时main.py和__init__.py同属Python的根包,你可以用以下两种方式导入conn:

  • from . import conn
  • 更简洁的import conn(根包的__init__.py会在导入同包模块时自动加载)

方法2:保留src目录,改用绝对导入

如果要保留src目录结构,需要做两步操作:

  1. 在main.py中替换相对导入为绝对导入:
    from src import conn
    
  2. 部署时打包整个src目录,然后在Lambda函数配置中,将handler设置为src.main.lambda_handler(告知Lambda从src包的main模块中查找处理函数)。

本地测试提示

不要直接用python src/main.py运行测试,这会因同样的原因触发相对导入错误。本地测试时,需从src的父目录执行命令:python -m src.main,这样Python会将src识别为一个包,相对导入就能正常工作。

内容的提问来源于stack exchange,提问作者Pritam Bohra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:25:01