uv cache prune --ci 是什么?CI 中如何缩小 uv 缓存体积

发布时间:2026/9/12 20:56:03

uv cache prune --ci 是什么?CI 中如何缩小 uv 缓存体积 uv cache prune --ci 是什么CI 中如何缩小 uv 缓存体积【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv如果你在 GitHub Actions 或 GitLab CI 中开启了 uv 缓存以加速依赖安装很快就会遇到一个反向问题缓存里存了大量预构建 wheel体积不断膨胀下次恢复缓存时上传/下载时间越来越长。uv 针对这个场景提供了uv cache prune --ci命令它删除缓存中所有预构建的 wheel 和解压后的源码分发包但保留从源码构建出来的 wheel。官方建议在每次 CI 任务结束时运行它以换取最大的缓存效率。这篇文章基于 uv 官方文档缓存概念、GitHub Actions 集成指南、GitLab CI/CD 集成指南说明这个命令的作用原理并给出在 CI 中缩小 uv 缓存体积的具体配置步骤。uv cache prune --ci 做了什么理解这个命令前先看 uv 缓存的内容构成。uv 为了高性能安装默认会缓存两类 wheel从源码构建build from source的 wheel直接从注册表下载的预构建 wheel。在 CI 环境中持久化预构建 wheel 往往并不划算——每次运行重新从注册表下载通常比传输一个臃肿的缓存更快。相反缓存源码构建出的 wheel 是值得的因为构建过程本身开销很大尤其是扩展模块。uv cache prune --ci就是按这个策略裁剪缓存删掉预构建 wheel 和解压后的源码分发包保留源码构建的 wheel。两点需要留意性能收益取决于安装的包官方文档明确说明该命令对性能的影响依赖于具体安装的包不存在“一定更快”的保证。它与uv cache prune是两回事不带--ci的uv cache prune删除所有_未使用_的缓存条目和所有集中式项目环境centralized project environments这些环境会在需要时重建适合定期清理本地缓存--ci模式则是专门针对“在 CI 中持久化缓存”这一目标设计的裁剪方式。前提条件CI 环境中已安装 uvGitHub Actions 使用astral-sh/setup-uv动作GitLab 可使用 Astral 提供的 Docker 镜像。你正在把 uv 缓存持久化到 CI 的跨任务缓存中——这正是需要缩小的对象。缓存目录的确定顺序是--no-cache时的临时目录 →--cache-dir/UV_CACHE_DIR/tool.uv.cache-dir配置 → 系统默认目录Unix 上如$XDG_CACHE_HOME/uv或$HOME/.cache/uvWindows 上为%LOCALAPPDATA%\uv\cache。在 CI 中通常用UV_CACHE_DIR显式固定位置。在 GitHub Actions 中配置下面是一条完整可执行的主路径固定缓存目录 → 恢复缓存 → 安装依赖 → 任务结束前裁剪缓存 → 上传。在 job 级别设置UV_CACHE_DIR把缓存位置固定为常量路径缓存键基于uv.lock的哈希jobs: install_job: env: # Configure a constant location for the uv cache UV_CACHE_DIR: /tmp/.uv-cache steps: # ... setup up Python and uv ... - name: Restore uv cache uses: actions/cache55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: /tmp/.uv-cache key: uv-${{ runner.os }}-${{ hashFiles(uv.lock) }} restore-keys: | uv-${{ runner.os }}-${{ hashFiles(uv.lock) }} uv-${{ runner.os }} # ... install packages, run tests, etc ... - name: Minimize uv cache run: uv cache prune --ci几个要点uv cache prune --ci的位置放在依赖安装和测试执行_之后_、缓存被保存回 CI 之前。这样裁剪下来的才是最终会被上传的缓存。缓存键项目使用 uv 项目接口有uv.lock时用hashFiles(uv.lock)作为键。如果使用uv pip接口官方建议改用requirements.txt作为缓存键文件而不是uv.lock。替代方案如果不想手动管理缓存astral-sh/setup-uv自带缓存支持加一个enable-cache: true即可- name: Enable caching uses: astral-sh/setup-uvc771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0 with: enable-cache: true在 GitLab CI/CD 中配置GitLab 的对应做法是把uv cache prune --ci放进after_script让它在该 job 的所有步骤之后、缓存持久化之前执行uv-install: variables: UV_CACHE_DIR: .uv-cache cache: - key: files: - uv.lock paths: - $UV_CACHE_DIR script: # Your uv commands after_script: - uv cache prune --ci官方文档同样建议在 job 末尾运行该命令来减小缓存体积如果使用uv pip接口缓存键文件应改用requirements.txt或pyproject.toml而不是uv.lock。验证缓存目录与体积裁剪效果没有固定的数值预期但可以用以下官方给出的手段核对用uv cache dir确认当前生效的缓存目录路径检查它是否与 CI 中配置的UV_CACHE_DIR一致——这是排查“缓存没有变小”的第一步。默认情况下缓存清理类命令会估算回收的磁盘空间如果需要更精确、能考虑硬链接和写时复制克隆的估算值可以启用cache-physical-space预览特性$ uv cache clean --preview-features cache-physical-space这个预览特性目前支持 macOS 和 Linux其他平台仍报告较粗略的估算。注意上例是对uv cache clean的演示命令对prune的裁剪量判断同样适用这套估算机制。两个已知的边界情况自托管 runner在长时间存活的自托管 runner 上默认缓存目录会无限增长此时在不同 job 之间共享缓存可能不是最优选择。官方给出的替代方案是把缓存移进 GitHub workspaceUV_CACHE_DIR: ${{ github.workspace }}/.cache/uv并在 job 结束时用 Post Job Hook 清理例如在 runner 上设置ACTIONS_RUNNER_HOOK_JOB_STARTED指向一个只包含uv cache clean的清理脚本。注意这是整目录清理而非prune --ci的选择性裁剪二者定位不同。并发锁定uv 会阻止在其他 uv 命令运行时修改缓存。uv cache命令默认等待其他 uv 进程结束最多 5 分钟以避免死锁该超时可以由UV_LOCK_TIMEOUT调整如果确定没有其他 uv 进程在读写缓存可以使用--force忽略锁。参考资料uv 缓存文档Caching in continuous integration在 GitHub Actions 中使用 uv在 GitLab CI/CD 中使用 uv存储目录说明【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/12 20:51:02

cf前端直接上传

之前是后端上传,现在计划改前端直接传。 使用直接创建者上传还无需中间存储桶,也能省去相关的存储/流出成本 参考文档 Presigned URLs Cloudflare R2 docs https://developers.cloudflare.com/r2/api/s3/presigned-urls/ 有php版本sdk https://dev…

2026/9/12 20:51:02

空压机轻量化智能运维:如何用小程序实现设备在线与能耗管控

不知道你有没有进过空压机房。一开门热浪裹着油味扑面而来,几台大铁箱轰隆隆响到两人说话得靠吼。这两年我一直在做工业设备侧的数字化落地,见得最多的就是空压机房这种“重要但没人管”的现场。空压机是工厂的动力心脏,但它的运维几乎是最传…

2026/9/12 22:01:07

Yolov5路面桥梁裂缝检测实战:从数据标注到模型部署

简介:基于Python与Yolov5的路面桥梁裂缝检测识别项目,提供完整源代码与预训练模型,面向毕业设计、课程设计及深度学习实践者,解决道路桥梁裂缝自动检测与定位的难点,适合有Python和深度学习基础的用户快速落地应用。压…

2026/9/12 22:01:07

遥感地块分割实战:多光谱预处理、边界感知损失与CRF后处理

简介:本资源为2021年MathorCup高校数学建模挑战赛大数据竞赛B题「遥感地块分割」国家一等奖获奖作品完整交付包,面向数学建模参赛者、遥感图像处理学习者及计算机视觉初学者。包内含762个文件,涵盖656张标注与预测结果PNG图像、48个核心Pytho…

2026/9/12 22:01:07

遥感地块分割实战:GDAL校正+小样本SegFormer+CRF后处理

简介:本资源为2021年MathorCup高校数学建模挑战赛大数据竞赛B题「遥感地块分割」国家一等奖获奖作品完整交付包,面向数学建模参赛者、遥感图像处理学习者及计算机视觉初学者。包内含762个文件,涵盖656张标注与预测结果PNG图像、48个核心Pytho…

2026/9/12 22:01:07

基于BP神经网络的人脸识别:Matlab完整实现与调参指南

简介:基于BP神经网络的人脸识别Matlab实现,是一份面向模式识别入门者与Matlab开发者的完整工程资源,覆盖人脸检测、特征提取、网络训练与测试评估全流程。包里融合了神经网络、PCA特征降维、GA优化等算法,直接可运行用于教学演示或…

2026/9/12 22:01:07

Android集成高德地图定位导航:SDK接入与源码工程化实践

简介:基于安卓平台开发的高德地图定位与导航功能源码包,面向需要集成地图能力的移动应用开发者及毕设实训学员,重点解决定位信息获取与多方式路线导航实现难题。定位模块展示如何获取经纬度、海拔等关键数据,并借助高德地图接口精…

2026/9/12 21:56:07

YOLOv5交通标志检测:从数据集到部署的全流程实战解析

简介:基于YOLOv5的交通标志物检测完整项目,主要面向正在准备课程设计、期末大作业的计算机专业学生,以及希望上手目标检测实战的深度学习学习者。项目包含全部开发源码、已经训练完成的权重模型与完整的训练测试数据,环境依赖配置…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码