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

AWS SageMaker Pipeline导入utils模块失败的问题解决咨询

问题解决:SageMaker Pipeline中找不到utils模块

核心原因

当你仅通过code="process.py"指定入口脚本时,SageMaker只会将process.py单个文件上传到容器的/opt/ml/processing/input/code目录,同目录下的utils.py不会被自动上传,因此Python无法找到该模块。

解决方案:必须指定source_dir

即使两个脚本在同一根目录,也需要通过source_dir参数指定根目录,这样SageMaker会将该目录下的所有文件(包括子文件/目录)全部上传到容器中,保证process.py能找到utils.py。

具体操作步骤

修改sklearn_processor.run的参数,添加source_dir并指定为你的根目录路径(当前工作目录用./即可),同时保留code="process.py"指定入口脚本:

step_args = sklearn_processor.run(
    inputs=[
        ProcessingInput(source=s3_bucket, destination="/opt/ml/processing/input"),
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
    ],
    source_dir="./",  # 指定根目录为source_dir
    code="process.py",  # 指定执行的入口脚本
)

原理说明

指定source_dir后,SageMaker会将该目录下的所有文件打包上传到容器的/opt/ml/processing/input/code目录,此时process.py和utils.py处于同一目录层级,Python的模块导入机制可以正常找到utils模块。

备选方案(不推荐)

如果暂时不想修改source_dir,可以在process.py开头添加代码将当前脚本所在目录加入Python路径:

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from utils import (
    # 你的函数
)

但这种方式仅解决路径问题,无法保证其他依赖文件被上传,因此优先推荐使用source_dir的规范方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:30:07