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

复用GitHub Action工作流时actions/setup-python因找不到requirements.txt报错

解决复用工作流中setup-python缓存报错的方案

核心问题是actions/setup-python@v4默认以当前工作目录的requirements.txt生成缓存键,但复用工作流时,当前检出的是仓库B的代码,而依赖定义文件在仓库A里,导致缓存逻辑找不到对应文件触发错误。可以通过以下两种方式解决:

方法一:显式指定缓存键,关联仓库A的依赖文件

在仓库A的复用工作流中,先检出自身代码获取依赖文件,再给setup-python配置自定义的缓存依赖路径,跳过默认的当前目录检测逻辑:

# 仓库A的复用工作流示例
jobs:
  reusable-job:
    runs-on: ubuntu-latest
    steps:
      - name: 检出仓库A代码(获取依赖文件与脚本)
        uses: actions/checkout@v4
        with:
          repository: 用户名/仓库A
          path: repo-a
      - name: 设置Python环境并配置缓存
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
          cache: 'pip'
          # 指定仓库A中依赖文件的路径,用于生成缓存键
          cache-dependency-path: 'repo-a/requirements.txt'
      - name: 安装依赖
        run: pip install -r repo-a/requirements.txt
      - name: 执行脚本
        run: repo-a/myscript

这种配置下,缓存键会基于仓库A的requirements.txt生成,同时直接从A的目录读取依赖文件执行安装,既满足缓存需求,也避免了找不到文件的问题。

方法二:禁用setup-python自动缓存,手动实现pip缓存

如果不想依赖setup-python的内置缓存逻辑,可以直接用actions/cache手动管理pip缓存,完全控制依赖文件的路径:

# 仓库A的复用工作流示例
jobs:
  reusable-job:
    runs-on: ubuntu-latest
    steps:
      - name: 检出仓库A代码
        uses: actions/checkout@v4
        with:
          repository: 用户名/仓库A
          path: repo-a
      - name: 设置Python环境(不启用内置缓存)
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - name: 缓存pip依赖
        uses: actions/cache@v3
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('repo-a/requirements.txt') }}
          restore-keys: ${{ runner.os }}-pip-
      - name: 安装依赖
        run: pip install -r repo-a/requirements.txt
      - name: 执行脚本
        run: repo-a/myscript

这种方式灵活性更高,直接基于仓库A的依赖文件生成缓存键,彻底规避setup-python默认逻辑带来的冲突。

额外注意点

  • 两种方案都需要先检出仓库A的代码,因为依赖文件和执行脚本都存储在A中,仓库B仅负责触发复用工作流,无需包含A的文件。
  • 若仓库A为私有仓库,需给actions/checkout配置token参数,使用拥有A仓库读取权限的个人访问令牌(PAT)。

内容的提问来源于stack exchange,提问作者Konrad Höffner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:10:33