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

如何解决Amazon SageMaker Studio Classic自动化笔记本本地文件读写路径问题

解决AWS SageMaker Studio Classic定时任务路径问题的方案

核心问题是定时运行时工作目录切换为/opt/ml/input/data/sagemaker_headless_execution,导致基于os.getcwd()的路径全部失效。解决的关键是以当前Notebook文件自身的位置为基准,动态定位项目根目录,而非依赖工作目录。

具体实现步骤

1. 动态获取项目根目录

在Notebook开头添加以下代码,获取项目根目录的绝对路径:

import os
import sys
from pathlib import Path

# 获取当前Notebook的所在路径
try:
    # Jupyter Notebook环境下获取路径
    from IPython import get_ipython
    notebook_dir = Path(os.path.abspath(get_ipython().config['IPKernelApp']['connection_file'])).parent.parent
except NameError:
    # 若作为普通Python脚本运行(备用逻辑)
    notebook_dir = Path(os.path.abspath(__file__)).parent

# 假设Notebook直接放在项目根目录下,若Notebook在子文件夹,调整parent层级(如notebook_dir.parent)
PROJECT_ROOT = notebook_dir

2. 正确导入自定义模块

替换原来的模块导入代码,改用项目根目录拼接路径:

# 将utils目录添加到Python路径
sys.path.append(str(PROJECT_ROOT / "utils"))
import SnowflakeSetup

3. 正确写入输出文件

替换文件写入的路径构建逻辑,确保输出路径基于项目根:

# 构建输出文件的完整路径
output_path = PROJECT_ROOT / "data" / "testsub" / "to_predict" / f"{end_date.strftime('%Y-%m-%d')}_prediction_run_data.csv"

# 自动创建不存在的父目录,避免写入失败
output_path.parent.mkdir(parents=True, exist_ok=True)

# 写入CSV文件
df.to_csv(output_path, index=False)

为什么之前的方法失效?

  • 硬编码路径:SageMaker的headless环境与手动运行环境的目录结构完全不同,硬编码的路径无法通用。
  • 环境变量PROJECT_ROOT:定时任务执行时可能未加载你手动配置的环境变量,导致变量为空或无效。
  • 依赖os.getcwd():工作目录由执行环境决定,手动运行和定时运行的工作目录不一致,导致路径解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:53:12