我的 AWS lambda 项目具有以下结构:
module
app.py
b.py
Run Code Online (Sandbox Code Playgroud)
app.py是我的默认 aws lambda 函数lambda_handler,它工作正常。我决定将所有繁重的计算从它中提取出来以calc实现b.py.
然后,我将它导入到app.py:
from module.b import calc
Run Code Online (Sandbox Code Playgroud)
现在,当我在本地运行它时sam local invoke Function --event events/event.json,它会引发一个错误:
{"errorType":"Runtime.ImportModuleError","errorMessage":"无法导入模块'app':没有名为'module'的模块"}
在我看来,当它准备运行代码时,它将文件移动到其他目录,因此导入中断。为了解决这个问题,我尝试使用相对导入:
from .b import calc
Run Code Online (Sandbox Code Playgroud)
但它也引发了一个错误:
{"errorType":"Runtime.ImportModuleError","errorMessage":"无法导入模块'app':尝试相对导入,没有已知的父包"}
如何在 aws lambda 上设置多文件 python 应用程序?