如何在不使用 venv 的情况下在 Gitlab CI/CD 中缓存 python 依赖项?

How to cache python dependecies in Gitlab CI/CD without using venv?

我正在尝试在我的 .gitlab-ci.yml 文件中使用缓存,但时间只会增加(通过添加空行进行测试)。我想缓存我用 pip 安装的 python 个包。 这是我安装和使用这些包的阶段(其他阶段使用Docker):

image: python:3.8-slim-buster

variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"

cache:
  paths:
    - .cache/pip

stages:
  - lint
  - test
  - build
  - deploy

test-job:
  stage: test
  before_script:
    - apt-get update
    - apt-get install -y --no-install-recommends gcc
    - apt install -y default-libmysqlclient-dev
    - pip3 install -r requirements.txt
  script:
    - pytest tests/test.py

在运行这条流水线之后,随着每一条流水线,流水线时间只会增加。 我按照 GitLab 文档中的这些步骤进行操作 - https://docs.gitlab.com/ee/ci/caching/#cache-python-dependencies 尽管我没有使用 venv,因为它没有它也能工作。 我仍然不确定如果不使用 PIP_CACHE_DIR 变量为什么需要它,但我遵循了文档。

缓存 python 依赖项的正确方法是什么?我不想使用 venv。

PIP_CACHE_DIR 是一个 pip 特性,可用于设置缓存目录。

的第二个答案解释了它。

对此可能存在一些分歧,但我认为对于 pip 包或节点模块之类的东西,为每个管道重新下载它们会更快。

Gitlab使用

缓存包时
cache:
  paths:
    - .cache/pip

Gitlab 创建的缓存被压缩并存储在某处(存储位置取决于运行器配置)。这需要压缩和上传缓存。然后,当创建另一个管道时,需要下载并解压缩缓存。如果使用缓存会减慢作业执行速度,那么删除缓存可能是有意义的。