You need to enable JavaScript to run this app. AWS SAM部署PyTorch模型时无法导入models模块问题如何解决
优惠活动
大模型
产品
解决方案
定价
更多

AWS SAM部署PyTorch模型时无法导入models模块问题如何解决

问题根因

你遇到的导入报错核心是Dockerfile中复制本地目录的指令不符合Docker路径规则,导致models、utils的目录结构没有被保留到Lambda容器的工作目录中。
当COPY/ADD指令指定多个源路径时,如果目标路径不以/结尾,Docker会直接把所有源路径下的文件平铺拷贝到目标路径下,不会保留原目录结构。你当前的写法会把models、utils目录内的所有文件直接放到Lambda工作目录/var/task下,不会生成models、utils两个子目录,因此app.py导入模块时会找不到对应包。

解决方案

按以下步骤排查修正即可:

  • 首先修正Dockerfile的复制指令,明确保留目录结构
    将原Dockerfile中复制目录的语句:
    ADD models utils ./
    
    替换为明确的目录复制规则:
    COPY models ./models
    COPY utils ./utils
    
  • 检查models、utils目录下是否存在__init__.py文件
    Python需要目录中存在__init__.py才会将其识别为可导入的包,你当前贴出的目录结构中只有根目录存在该文件,需要在models、utils目录下各新增一个空的__init__.py文件。
  • 本地验证目录结构是否正确
    修正后可本地构建镜像验证结构,执行以下命令:
    # 构建镜像
    docker build -t test-lambda .
    # 查看工作目录结构
    docker run --rm --entrypoint ls test-lambda -R /var/task
    
    确认输出中存在models、utils两个子目录,且子目录下的文件完整即可重新部署。

注:你之前将ADD替换为COPY没有生效,是因为问题出在路径规则上,本地文件复制场景下ADD和COPY的行为完全一致,和指令本身无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 06:15:09