wheelripe

Notes · 2026-10-13

升级 Python 3.15 前,先查清哪些依赖还没有 wheel

2026 年 10 月 CPython 3.15 正式发布,自由线程版本 3.15t 也进入“受支持”阶段。随后各个项目的 issue 区开始出现同一类帖子:“支持 Python 3.15”,下面是一张手工整理的依赖清单——谁有 wheel、谁还没有。

升级卡在哪

看看 harlequin#1119 和 dynamic-des#40:维护者逐个打开 PyPI 页面,翻文件列表找 cp315;再为 3.15t 查一遍(abi3 wheel 在自由线程版上不能用);再为 macOS、Windows 各查一遍;下周再来一遍。

pip 帮不上太多:遇到第一个需要编译的包就停下,需要在每个系统上装好目标解释器,也不会告诉你哪个新版本已经有 wheel。Dependabot / Renovate 会升版本,但不懂 wheel 标签。

wheelripe 做什么

读取 lockfile(uv、PEP 751、Poetry、Pipenv、requirements、pyproject),每个包向 PyPI JSON API 发一次请求,按 pip 的规则逐平台匹配解释器、ABI(含 PEP 803 的 abi3t)和平台标签(含 glibc / macOS 下限)。

$ uvx --from git+https://github.com/Blackman99/wheelripe wheelripe uv.lock -p 3.15t

关键是区分 BUMP(升到某个版本就有 wheel,今天就能改)和 BLOCKED(任何版本都还没有,只能等上游;报告里附上游链接)。

结果可信吗

CI 每次提交都会让 pip 本身(--dry-run --only-binary=:all:,显式指定 Python/ABI/平台)对 26 个真实包、7 个平台、3.15 与 3.15t 逐一给出答案,与 wheelripe 不一致就失败;还会在真实的 3.15 / 3.15t 解释器上安装验证。

让 CI 每周告诉你

- uses: Blackman99/wheelripe@v0.1.0
  with:
    python-version: "3.15t"
    fail-on: blocked

最后一个阻塞依赖发布 wheel 的那一周,任务会变绿。另有 MCP server,编码 agent 改 requires-python 前可以先问一下。

文档 · GitHub