ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何配置 Renovate 自动更新 uv.lock 与 PEP 723 脚本依赖

2026/9/12 9:04:04 拓冰建站 浏览量
如何配置 Renovate 自动更新 uv.lock 与 PEP 723 脚本依赖 如何配置 Renovate 自动更新 uv.lock 与 PEP 723 脚本依赖【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv如果你用 uv 管理 Python 项目的依赖并希望借助 Renovate 机器人定期拉取依赖升级、避免长期不更新带来的安全暴露和复杂升级这篇文章说明如何在renovate.json5中配置两类更新场景由uv.lock标识的 uv 项目依赖以及使用 PEP 723 内联元数据声明依赖的 Python 脚本。完成配置后Renovate 会为两类依赖分别创建更新 pull request其中项目依赖由 Renovate 自动改pyproject.toml和uv.lock而脚本关联的锁文件目前仍需要手动刷新。前置条件仓库中已有 uv 管理的依赖项目场景下即仓库里存在uv.lock文件使用内联脚本元数据的 Python 脚本PEP 723 格式已按 Renovate 文档完成机器人本身的接入本文只覆盖与 uv 相关的配置项。让 Renovate 通过 uv.lock 自动更新项目依赖Renovate 以仓库中uv.lock文件的存在来判断项目使用 uv 管理依赖之后会针对以下三类依赖提出升级建议项目依赖project.dependencies可选依赖project.optional-dependencies即 extras开发依赖dependency-groups。升级时 Renovate 会同时更新pyproject.toml和uv.lock两个文件因此你不需要额外配置 lockfile 管理器也不需要手动执行uv lock。除了直接升级声明的依赖还可以开启lockFileMaintenance选项定期刷新整个锁文件例如更新未直接声明的传递依赖{ $schema: https://docs.renovatebot.com/renovate-schema.json, lockFileMaintenance: { enabled: true, }, }配置放在仓库中 Renovate 约定的配置文件里如仓库根目录的renovate.json5。判断这项配置是否生效看 Renovate 是否按要求创建了刷新uv.lock的 pull request。更新 PEP 723 内联脚本元数据中的依赖对于使用 内联脚本元数据即脚本头部# /// script注释块中dependencies字段的 Python 脚本Renovate 支持更新这些依赖但有一个前提Renovate 无法自动检测哪些 Python 文件使用了内联脚本元数据所以必须用managerFilePatterns显式给出这些文件的位置{ $schema: https://docs.renovatebot.com/renovate-schema.json, pep723: { managerFilePatterns: [ docs/build.py, scripts/**/*.py, ], }, }上面的docs/build.py和scripts/**/*.py是文档示例需要替换成你自己仓库中实际使用内联元数据的脚本路径或 glob 模式漏掉的路径不会被 Renovate 扫描到。内联脚本元数据的格式参考 Running scripts 中的# /// script注释块说明。限制脚本的锁文件需要手动更新文档明确标注了一个当前限制Renovate 尚不支持更新脚本关联的锁文件。如果你的脚本启用了锁见下节Renovate 提出依赖升级后锁文件需要由你自己更新。uv 为 PEP 723 脚本提供uv.lock格式的锁文件但与项目不同脚本必须显式锁定$ uv lock --script example.py该命令会在脚本同目录创建.lock文件例如example.py.lock。锁定之后uv run --script、uv add --script、uv export --script、uv tree --script等操作会复用锁中记录的依赖并在必要时更新锁文件。所以 Renovate 改动脚本内联依赖后重新运行一次uv lock --script 脚本路径即可完成刷新。exclude-newer 与 minimumReleaseAge 的配套配置如果你的项目或脚本使用了exclude-newer选项限制解析只考虑指定时间之前发布的分发版本用于提升可复现性见 resolution 文档 与 脚本可复现性一节文档建议同时在 Renovate 中设置对应的minimumReleaseAge选项否则会出现 uv 无法完成锁定的 pull requestRenovate 想升级到刚发布的版本而 uv 因exclude-newer拒绝使用该版本。例如exclude-newer设置为1 week时Renovate 配置为{ $schema: https://docs.renovatebot.com/renovate-schema.json, // Enable only for PyPI. packageRules: [ { matchDatasources: [pypi], minimumReleaseAge: 1 week, }, ], // Or enable for every ecosystem. minimumReleaseAge: 1 week, }两个分支二选一只匹配pypi数据源的packageRules写法或对所有生态生效的顶层minimumReleaseAge写法。冷却时长应与你的exclude-newer值保持一致文档示例中的1 week对应exclude-newer 1 week。配置完成后的核对方式项目依赖等待 Renovate 创建升级 PR 后确认 PR 的 diff 同时包含pyproject.toml的版本约束变化和uv.lock的重新锁定结果开启lockFileMaintenance后还应能看到定期刷新传递依赖的 PR。PEP 723 脚本确认 Renovate 只对managerFilePatterns列出的文件创建 PR若脚本带.lock文件PR 合入后在本地运行uv lock --script 脚本路径手动刷新锁文件并确认同目录的.lock文件内容已更新。已知边界脚本锁文件的自动更新目前不可用文档标注为 Renovate 侧的未支持项这是唯一需要保留人工步骤的环节。参考Using uv with Renovate本文全部 Renovate 配置的来源Running scriptsPEP 723 内联元数据与uv lock --script锁文件说明Managing dependenciesuv.lock关联的三类依赖字段定义同类工具对照Using uv with Dependabot【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考