gpt4 book ai didi

python - 在 GitHub Actions 中发布缓存 python 依赖项

转载 作者:行者123 更新时间:2023-12-05 01:28:10 26 4
gpt4 key购买 nike

我在 github 操作中有以下步骤:

steps:
- name: Check out repository code
uses: actions/checkout@v2

- name: Cache dependencies
id: pip-cache
uses: actions/cache@v2
with:
path: ~.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-

- name: Install dependencies
if: steps.pip-cache.outputs.cache-hit != 'true'
run: pip install -r requirements.txt

- name: run mypy
run: mypy .

缓存工作正常,但是当发生缓存命中时,我尝试运行 mypy,它失败了:

Run mypy .
/home/runner/work/_temp/9887df5b-d5cc-46d7-90e1-b884d8c49272.sh: line 1: mypy: command not found
Error: Process completed with exit code 127.

缓存依赖项的全部意义在于,我不必在每次运行工作流程时都安装它们。如何使用缓存的依赖项?

最佳答案

您只缓存由 pip 下载的源压缩包二进制文件 .你没有缓存:

  • 已安装的 Python 包(即,事件 Python 解释器的 site-packages/ 子目录)。
  • 已安装的入口 pip (即驻留在当前 ${PATH} 中的可执行命令)。

这不一定是坏事。仅仅下载 Assets 往往会消耗不成比例的 GitHub Actions (GA) 分钟数;缓存 Assets 可以轻而易举地缓解这个问题。

换句话说,删除 if: steps.pip-cache.outputs.cache-hit != 'true'行来恢复你的 GitHub Actions (GA) 工作流程。

但是...我想缓存已安装的包!

接受挑战。这是可行的——尽管更脆弱。我建议只缓存 pip下载,除非您分析了 pip install命令成为一个重要的安装瓶颈。

假设您仍想这样做。在这种情况下,类似于以下代码片段的内容应该可以让您到达您想去的地方:

  - uses: 'actions/setup-python@v2'
with:
# CAUTION: Replace this hardcoded "3.7" string with the
# major and minor version of your desired Python interpreter.
python-version: "3.7"
- uses: 'actions/cache@v2'
id: cache
with:
# CAUTION: Replace this hardcoded "python3.7" dirname with
# the dirname providing your desired Python interpreter.
path: ${{ env.pythonLocation }}/lib/python3.7/site-packages/*
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-

如前所述,您需要手动替换硬编码的 3.7python3.7上面的子字符串包含特定于您的用例的内容。这就是为什么它非常脆弱的几个原因之一。 另一个是${{ env.pythonLocation }} setup-python 设置的环境变量GitHub Action 已infamously undocumented for several years . </gulp> (env.pythonLocation 文档是从 v4.0.0 添加的。)

理论上,将以上内容直接添加到您现有的 uses: actions/cache@v2 下列表项应该足够了。祝您在进入可怕的未知世界时好运,一路顺风。

关于python - 在 GitHub Actions 中发布缓存 python 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68896173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com