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

AWS Studio运行管道报No module named 'sagemaker'如何解决

问题根因

导入报错的核心原因是SageMaker Pipeline各步骤运行环境完全隔离:

  • 运行pipeline.py的环境是SageMaker Studio Notebook自带的默认conda环境,预装了sagemaker SDK,因此导入无异常
  • 管道调度运行preprocessing.py时,代码跑在独立拉起的Processing Job临时计算容器中,该容器默认基础镜像未预装sagemaker包。在Notebook单元格中执行pip/conda安装命令仅会修改Notebook自身环境的依赖,不会同步到Pipeline拉起的独立作业容器,因此会出现Notebook中提示依赖已安装,但作业运行时仍报模块不存在的现象。
解决方案

方案1:Processing Step显式声明依赖(最推荐,符合MLOps可复现要求)

定义处理作业步骤时显式传入依赖配置,SageMaker会自动在作业启动前完成依赖安装,两种实现方式可选:

  1. 依赖文件声明方式
    在preprocessing.py同级目录新建requirements.txt,写入需要的依赖:
    sagemaker>=2.200.0
    pandas
    numpy
    
    定义Processing Step时通过dependencies参数传入依赖文件路径:
    from sagemaker.sklearn.processing import SKLearnProcessor
    from sagemaker.processing import ProcessingInput, ProcessingOutput
    from sagemaker.workflow.steps import ProcessingStep
    
    sklearn_processor = SKLearnProcessor(
        framework_version="1.2-1",
        role=role,
        instance_type="ml.m5.xlarge",
        instance_count=1
    )
    
    step_process = ProcessingStep(
        name="ChurnDataPreprocess",
        processor=sklearn_processor,
        inputs=[
            ProcessingInput(source=input_data_s3_uri, destination="/opt/ml/processing/input"),
        ],
        outputs=[
            ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
            ProcessingOutput(output_name="test", source="/opt/ml/processing/test"),
        ],
        code="preprocessing.py",
        dependencies=["requirements.txt"]
    )
    
  2. 入口脚本内嵌安装逻辑(适合快速调试)
    在preprocessing.py所有导入语句前,添加依赖安装代码:
    import subprocess
    import sys
    subprocess.check_call([sys.executable, "-m", "pip", "install", "sagemaker>=2.200.0"])
    
    # 后续正常编写导入逻辑
    import sagemaker
    import pandas as pd
    

方案2:使用预安装依赖的自定义镜像(适合生产环境)

提前构建预装所有业务依赖的容器镜像,推送至Amazon ECR镜像仓库,定义Processor时通过image_uri参数指定自定义镜像地址即可。该方案无需每次作业启动时在线安装依赖,运行速度更快,环境一致性更强。

方案3:SageMaker Studio Notebook环境安装依赖的正确语法(仅对Notebook内运行的代码生效)

如果需要在Notebook交互环境中安装依赖,避免包安装到无关conda环境,需按以下步骤操作:

  1. 先查询当前Notebook绑定的conda环境名称
    !echo $CONDA_DEFAULT_ENV
    
  2. 针对对应环境执行安装命令,例如查询到环境名为python3时:
    # conda安装方式
    !conda install -n python3 -y <package-name>
    # pip安装方式
    !/home/ec2-user/anaconda3/envs/python3/bin/pip install <package-name>
    

注意:Notebook环境安装的所有依赖,都不会被SageMaker Pipeline拉起的处理、训练、批量推理等独立作业继承,这类作业运行在独立的临时容器中,必须通过作业自身的配置声明依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:09:22