AWS CDK部署Python Lambda报错:无法导入模块'my_server'
问题解决方法
错误原因
Runtime.ImportModuleError 是因为a.py 中的导入语句错误引用了 my_server 模块。AWS CDK 的 PythonFunction 会将 entry 指定的目录(这里是 ../my_server)下的所有文件直接打包到 Lambda 部署包的根目录,而非把整个 my_server 目录作为子目录放入包中。因此在 Lambda 运行环境里,my_server 并非可导入的子模块,同级文件直接处于顶层命名空间。
修复步骤
修正 a.py 中的导入语句:
假设 a.py 里有from my_server.utils import xxx或import my_server这类代码,直接改为同级文件的引用方式:- 导入同级目录的其他文件(比如
utils.py),改成from utils import xxx或import utils; - 用相对导入同目录文件(比如
config.py),可以写from . import config(本地开发时可在 my_server 目录下添加空的__init__.py文件,确保 Python 识别相对导入)。
- 导入同级目录的其他文件(比如
验证打包结构(可选):
查看 CDK 生成的 Lambda 资产包(项目根目录的cdk.out文件夹下对应 Lambda 的资产目录),确认包内直接包含a.py、app.py及其他 my_server 下的文件,而非嵌套在my_server子目录中。确认 entry 配置正确:
当前entry="../my_server"配置没问题,它指向了包含 a.py 和 app.py 的代码根目录,无需调整。
内容的提问来源于stack exchange,提问作者Rony Tesler
相关产品推荐
相关产品推荐

