GitHub Actions中pip缓存启用失败问题求助
解决GitHub Actions中pip缓存权限问题的方案
报错核心原因是默认pip缓存目录/home/github-action-runner/.cache/pip的权限不符合要求,当前运行用户无读写权限,导致actions/setup-python执行pip cache dir命令失败。以下是几种可行的解决办法:
方法一:手动指定可写的pip缓存目录
在setup-python步骤前创建一个当前用户有权限的缓存目录,通过环境变量告知pip使用该目录:
name: Preparation on: workflow_call: workflow_dispatch: jobs: preparation: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: 创建pip缓存目录并设置环境变量 run: | mkdir -p .pip-cache echo "PIP_CACHE_DIR=$(pwd)/.pip-cache" >> $GITHUB_ENV - name: Setup Python environment uses: actions/setup-python@v4 with: python-version: 3.x cache: 'pip' - name: Install Python dependencies run: pip install -r requirements.txt
工作目录下的.pip-cache由当前运行用户创建,天然具备读写权限,setup-python会基于这个目录正常处理缓存逻辑。
方法二:改用actions/cache手动管理pip缓存
跳过setup-python的自动缓存功能,直接用官方缓存 action 手动控制缓存路径和触发条件,灵活性更高:
name: Preparation on: workflow_call: workflow_dispatch: jobs: preparation: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup Python environment uses: actions/setup-python@v4 with: python-version: 3.x - name: 获取pip缓存路径 id: pip-cache run: | echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - name: 缓存pip依赖 uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Install Python dependencies run: pip install -r requirements.txt
通过requirements.txt的哈希值作为缓存key,只有当依赖清单变更时才会重新生成缓存,能有效复用已有依赖包。
方法三:修复默认缓存目录权限(不推荐)
若坚持使用默认缓存目录,可提前修改目录权限,但这种方式可能破坏runner原有环境,仅适用于自托管runner场景:
- name: 修复pip缓存目录权限 run: | sudo mkdir -p /home/github-action-runner/.cache/pip sudo chown -R $USER:$USER /home/github-action-runner/.cache/pip
执行完该步骤后再运行setup-python即可。
内容的提问来源于stack exchange,提问作者evolved
相关产品推荐
相关产品推荐

