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

如何在Azure DevOps的Python CI流水线中实现依赖缓存?

Azure DevOps Pipelines pip缓存失效排查修复方案

1. 确认缓存key的配置逻辑

  • 缓存key必须包含能识别依赖变化的标识,最常用的是requirements.txt/pyproject.toml/poetry.lock这类依赖声明文件的哈希值,同时要关联操作系统、Python版本,避免不同环境的缓存冲突,示例正确的配置:
variables:
  PIP_CACHE_DIR: $(Pipeline.Workspace)/.pip

steps:
- task: Cache@2
  inputs:
    key: 'pip | "$(Agent.OS)" | requirements.txt'
    restoreKeys: |
      pip | "$(Agent.OS)"
      pip
    path: $(PIP_CACHE_DIR)
  displayName: 缓存pip依赖
  • 注意:如果依赖声明文件放在子目录下,key里要写对文件路径,不要直接写根目录的文件名,否则哈希值计算逻辑错误会导致缓存永远匹配失败。

2. 确认pip安装命令的缓存目录配置

  • 必须显式指定pip安装时读取的缓存目录和你在Cache任务里配置的path一致,不要用系统默认路径,否则就算缓存恢复成功,pip也读不到缓存内容,依然会重新下载依赖:
- script: |
    pip install --cache-dir $(PIP_CACHE_DIR) -r requirements.txt
  displayName: 安装Python依赖
  • 如果是用poetry/pipenv等包管理工具,也要对应修改其缓存目录的环境变量,和Cache任务的path对齐。

3. 确认缓存命中逻辑

  • 流水线运行时可以查看Cache任务的日志:如果显示Cache restored from key: xxx说明缓存命中,如果显示No cached version found for key说明key不匹配,需要回查key的配置是否和依赖文件、环境变量匹配。
  • 不要在缓存任务之前执行删除缓存目录、强制升级pip之类的操作,会破坏恢复的缓存内容。
  • 如果是自托管代理,确认代理的工作目录没有被每次运行前清空,否则恢复的缓存文件会被直接删除。

内容的提问来源于stack exchange,提问作者sh0rtcircuit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:36:05