如何在Amazon Sagemaker Processing Job中安装Python依赖包
解决方案
方法1:搭配requirements.txt自动安装(推荐)
该方法无需修改任务提交逻辑,仅需调整本地代码目录结构和预处理脚本,即可完成依赖自动安装:
- 在
preprocessing.py所在的本地目录下新增requirements.txt,写入需要的依赖包及版本,示例内容如下:
snowflake-connector-python==3.7.0 # 其余需要的依赖包
- 修改
preprocessing.py,在导入第三方依赖的代码前,新增依赖安装逻辑:
import os import subprocess import sys def install_dependencies(): req_path = "/opt/ml/processing/input/code/requirements.txt" if os.path.exists(req_path): subprocess.check_call([ sys.executable, "-m", "pip", "install", "-r", req_path, "--quiet" ]) install_dependencies() # 后续再导入业务所需的第三方包 import snowflake.connector # 其余你的预处理逻辑
- 调用SKLearnProcessor提交任务时,指定
source_dir参数为上述本地目录的路径,code参数直接填写preprocessing.py即可,SDK会自动将整个目录内容上传到处理容器的对应路径下。
方法2:单脚本直接安装(适合依赖较少的场景)
如果仅需安装1-2个依赖,无需单独维护requirements.txt,可以直接在预处理脚本开头安装指定包:
import subprocess import sys # 直接安装所需依赖 subprocess.check_call([ sys.executable, "-m", "pip", "install", "snowflake-connector-python", "--quiet" ]) import snowflake.connector # 其余你的预处理逻辑
注意事项
- 依赖安装逻辑必须放在导入第三方包的代码之前,否则仍会触发模块未找到的报错
- 如果依赖包体积较大、安装耗时久,待依赖版本固定后可再考虑构建自定义镜像,减少每次任务的启动等待时间
内容的提问来源于stack exchange,提问作者iCHAIT
相关产品推荐
相关产品推荐

