如何在Azure Pipeline中避免重复执行Python依赖安装任务
可行解决方案
方案1:开启CI/CD流水线的依赖缓存
- 主流CI/CD工具(Jenkins、GitHub Actions、GitLab CI等)均内置缓存功能,可将
pip install下载的依赖包直接缓存到流水线节点,后续执行时只要requirements.txt没有变动,就不会重复下载安装依赖,直接复用缓存内容。 - 配置完成后哪怕一天执行30次流水线,只要依赖清单没更新,全程只会实际执行1次依赖下载安装。
方案2:重构流水线任务结构,抽离依赖安装为全局前置任务
- 你当前的两个重复任务都嵌套了
pip install -r scripts/requirements.txt步骤,可以把这一步单独抽成所有任务的前置公共任务,设置为仅执行1次,执行完成后再触发后续的两个业务任务,后续业务任务直接复用前置任务安装好的依赖环境即可。 - 如果你的流水线是多节点运行的,可把前置任务安装好的环境打包成轻量制品,传递给下游两个任务直接加载使用。
方案3:构建预装依赖的自定义运行镜像
- 如果你的依赖变动频率很低,可以提前把对应Python版本+
requirements.txt里的所有依赖打包成自定义的Docker镜像,流水线所有任务直接拉取这个镜像运行即可,全程不需要执行任何pip install操作。 - 每次依赖更新时重新构建一次镜像即可,适合高频执行的流水线场景。
方案4:开启pip本地缓存(临时应急方案)
- 如果你暂时不想调整流水线结构,可以直接修改执行命令为
pip install --cache-dir ./pip_cache -r scripts/requirements.txt,只要执行任务的节点是同一个,pip会自动识别已缓存的依赖包,跳过重复下载安装步骤。
内容的提问来源于stack exchange,提问作者fasho
相关产品推荐
相关产品推荐

