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
相关产品推荐
相关产品推荐

