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

GitHub Actions中Poetry环境无法访问DVC拉取数据的解决问询

解决GitHub Actions中Poetry环境无法访问DVC拉取数据的问题

问题核心

本地环境运行正常,但在GitHub Actions的Ubuntu镜像中,Poetry执行data_validation脚本时找不到DVC拉取的数据文件,本质是脚本数据路径与CI工作目录不匹配,或是脚本依赖了相对于自身位置的路径,而非基于项目根目录的统一路径。

可行解决方案

1. 修正脚本中的数据路径写法

确保src/data/data_validation.py里读取数据的路径基于项目根目录,避免依赖脚本所在目录的相对路径。用pathlib可以稳定获取项目根:

from pathlib import Path

# 从当前脚本(src/data/data_validation.py)向上回溯到项目根目录
PROJECT_ROOT = Path(__file__).resolve().parent.parent.parent
# 拼接目标数据文件路径
TARGET_DATA_PATH = PROJECT_ROOT / "data" / "processed" / "merged_data.csv"

# 后续读取数据时使用TARGET_DATA_PATH

2. 在CI中明确工作目录并验证数据存在

在Run Checkpoint步骤前添加目录检查,确认DVC拉取的数据已在项目根目录:

- name: 验证数据目录结构
  run: |
    ls -la ${{ github.workspace }}/data

同时显式指定Run Checkpoint的工作目录为项目根:

- name: Run Checkpoint
  working-directory: ${{ github.workspace }}
  run: |
    poetry run data_validation

3. 修复数据目录权限(可选)

如果Ubuntu镜像中存在文件权限限制,可添加权限修复步骤:

- name: 修复数据目录权限
  run: |
    chmod -R 755 ${{ github.workspace }}/data

4. 确认DVC拉取完整性

修改Pull data步骤,添加详细日志确认数据拉取成功:

- name: Pull data
  run: |
    poetry run dvc pull -v

错误信息翻译

从你提供的截图来看,核心错误内容为:

文件未找到错误:[错误号2] 没有该文件或目录: './data/[对应子目录/文件名]'

这说明脚本尝试访问的路径在CI环境中不存在,上述方案可针对性解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:05:30