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

发布时间:2026/11/11 16:08:40

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/11/11 16:08:40

cf前端直接上传

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

2026/11/10 1:39:45

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

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

2026/11/11 16:04:53

电工证 正反转怎么练才不会挂科?考前押题全在这了

电工证 正反转怎么练才不会挂科?考前押题全在这了 实操考试心里没底怕挂科?特别是电工证正反转操作,一不小心就容易出错。别急,这篇文章能帮你理清思路,掌握实操关键点,搭配考前押题,助你顺利通过考核。 电工证正反转操作流程是怎么规定的?…

2026/11/11 16:04:53

天津特种工报考别被坑了!良心建议帮你避开这些坑

天津特种工报考别被坑了!良心建议帮你避开这些坑 不知道去哪报名怕被中介坑?天津特种工报考真的让人头大,中介鱼龙混杂、价格参差不齐,一不小心就花冤枉钱。今天我就从驻马店一家中小施工企业的老总角度,聊聊天津特种工报考那些事,给你几个 良心建议…

2026/11/11 16:04:53

小白报考电工证要多久官方回应实操考试考什么

小白报考电工证要多久官方回应实操考试考什么 急需特种作业证才能上岗找工作,这是很多想入行电工行业的新人最头疼的问题。官方回应明确指出,报考电工证不是一朝一夕的事,但也不是遥不可及。南阳卧龙区的不少转岗从业者已经成功转型,他们的经历告诉你,只…

2026/11/11 16:04:53

儋州特种工培训怎么搞?2026河南最新政策说清复审流程

儋州特种工培训怎么搞?2026河南最新政策说清复审流程 证书过期了不知道怎么复审延期?别慌,2026年河南最新政策明确要求特种作业证必须按时复审,否则将面临暂停执业甚至吊销证书的风险。如果你正在儋州办理特种工培训,或者正准备复审,这篇干货能…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

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

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

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