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

如何在DVC中通过constants.py实现路径的单一源管理?

在DVC中统一管理路径的正确方式

你的问题出在constants.py的格式不符合DVC对vars文件的要求。DVC加载Python文件作为vars时,需要文件中定义一个名为vars的字典来存储变量。下面是几种可行的解决方案:

方案1:修正Python变量文件

调整constants.py,将路径变量放入vars字典中:

vars = {
    "MY_DATA": "data/location",
    "MY_OUT": "data/out"
}

之后你的dvc.yaml写法保持不变即可,DVC会正确识别这些变量并完成插值。

方案2:使用YAML文件存储路径(更简洁)

相比Python文件,用YAML文件管理路径更直观,无需额外的字典结构:

创建paths.yaml:

MY_DATA: "data/location"
MY_OUT: "data/out"

修改dvc.yaml中的vars指向该文件:

vars:
  - paths.yaml

stages:
  something:
    deps:
      - ${MY_DATA}
    outs:
      - ${MY_OUT}
    cmd: python some_script.py

方案3:使用params统一管理(推荐用于跨脚本共享)

如果你需要在Python脚本中也使用这些路径,params是更合适的选择——它能让DVC配置和Python代码共享同一套路径定义,避免重复:

  1. 创建params.yaml:
paths:
  MY_DATA: "data/location"
  MY_OUT: "data/out"
  1. 在dvc.yaml中通过params引用并插值:
params:
  - paths

stages:
  something:
    deps:
      - ${paths.MY_DATA}
    outs:
      - ${paths.MY_OUT}
    cmd: python some_script.py
  1. 在Python脚本some_script.py中加载这些路径:
import dvc.api

params = dvc.api.params_get()
MY_DATA = params["paths"]["MY_DATA"]
MY_OUT = params["paths"]["MY_OUT"]

# 后续使用这些变量

这种方式既满足了DVC阶段的路径统一管理,又能让你的Python代码直接复用这些定义,完全实现单一源修改的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:07:16