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

Databricks使用PythonScriptStep()时提示找不到scoring.py文件

Databricks 流水线PythonScriptStep无法定位脚本问题排查

问题复现

在Databricks中使用PythonScriptStep()定义流水线步骤时,已显式配置source_directory参数指向脚本所在目录,但运行时始终在/databricks/driver/路径下查找目标脚本,抛出文件不存在错误。受业务规则限制,无法替换使用DatabricksStep()实现功能。

问题配置代码

scoring_step = PythonScriptStep(
    name="Scoring_Step",
    source_directory=os.getenv("DATABRICKS_NOTEBOOK_PATH", "/Users/USER_NAME/source_directory"),
    script_name="./scoring.py",
    arguments=["--input_dataset", ds_consumption],
    compute_target=pipeline_cluster,
    runconfig=pipeline_run_config,
    allow_reuse=False)

报错信息

Step [Scoring_Step]: script not found at: /databricks/driver/scoring.py. Make sure to specify an appropriate source_directory on the Step or default_source_directory on the Pipeline.

根因分析

配置不生效是三个常见问题叠加导致:

  1. script_name参数不支持相对路径前缀,传入./scoring.py时,SDK会直接跳过source_directory路径拼接逻辑,强制在当前进程工作目录(即Databricks Driver默认路径/databricks/driver)查找文件。
  2. source_directory参数仅识别Driver节点本地文件系统的绝对路径,传入的/Users/USER_NAME/xxx是Databricks工作区的虚拟路径,DATABRICKS_NOTEBOOK_PATH环境变量取到的也是工作区Notebook路径,都不属于本地文件系统路径,SDK识别到无效路径后会自动fallback到默认工作目录。
  3. 若runconfig对应的RunConfiguration对象、或Pipeline初始化时配置了default_source_directory,优先级会高于步骤级传入的source_directory,如果这两个位置留空或配置错误,也会导致路径配置失效。

修复方案

按以下顺序调整配置即可:

  • 修正script_name参数,删除./前缀,直接传入文件名:script_name="scoring.py"
  • 替换source_directory为Driver本地可访问的绝对路径:
    • 若脚本存放在DBFS,使用/dbfs/开头的本地挂载路径,例如脚本在DBFS的/FileStore/pipeline_scripts/目录下,对应本地路径为/dbfs/FileStore/pipeline_scripts/
    • 若脚本存放在工作区目录,可先通过shell命令复制到本地临时目录再引用,例如执行%sh mkdir -p /tmp/pipeline_scripts && cp /Workspace/Users/USER_NAME/source_directory/scoring.py /tmp/pipeline_scripts/后,source_directory设为/tmp/pipeline_scripts
  • 检查pipeline_run_config与Pipeline初始化参数,删除冲突的source_directory/default_source_directory配置,或确保配置的路径和步骤级路径一致。

修正后参考代码

import os
# 确保该路径为Driver本地可访问的绝对路径,且路径下存在scoring.py
source_dir = "/dbfs/FileStore/pipeline_scripts/source_directory"
scoring_step = PythonScriptStep(
    name="Scoring_Step",
    source_directory=source_dir,
    script_name="scoring.py",
    arguments=["--input_dataset", ds_consumption],
    compute_target=pipeline_cluster,
    runconfig=pipeline_run_config,
    allow_reuse=False
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:48:31