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

AWS Lambda执行sam local invoke无法识别app.py应用问题咨询

解决方案

你的报错核心是Lambda运行环境的Python模块搜索路径未包含项目代码目录,本地pytest运行时会自动把当前工作目录加入搜索路径,因此可以正常执行,SAM本地模拟环境的路径规则和生产Lambda一致,因此出现导入失败。可按以下方案逐一排查修正:

  • 方案1:修正template.yaml的函数配置
    打开内层bodyestimate目录下的template.yaml,找到HelloWorldFunction的配置段,确认两个参数配置正确:

    1. 若要直接打包当前目录下的代码:CodeUri设置为./,Handler设置为app.lambda_handler(此处的lambda_handler替换为你app.py里实际的入口函数名)
    2. 若要按包结构组织代码:CodeUri设置为外层bodyestimate项目根目录路径,Handler设置为bodyestimate.app.lambda_handler
      修改完成后删除项目下的.aws-sam目录,重新执行sam build后再调用invoke命令。
  • 方案2:在app.py开头手动添加模块搜索路径
    如果你的app.py中存在从bodyestimate包导入其他模块的逻辑,可以在app.py的最开头加入以下代码,强制把当前文件所在目录加入Python搜索路径:

    import sys
    import os
    sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
    
  • 方案3:调整运行sam build的工作目录
    如果你是从内层bodyestimate目录执行的sam build,可以切换到外层bodyestimate根目录执行build,同时修改template.yaml的CodeUri为./bodyestimate/,Handler保持app.lambda_handler即可,该配置会把内层bodyestimate目录下的所有代码直接打包到Lambda的执行根目录,避免包导入层级错误。

内容的提问来源于stack exchange,提问作者Peter Dimmar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:54:03