Python 3.15.0 candidate 2已于2026年9月1日发布,这是10月正式版前的例行最后一个候选版本。发布经理Hugo van Kemenade在公告里说得很直接:从这一刻起到正式版之间,只允许经审查、性质明确的缺陷修复。他还用了"strongly encourage"这种少见的强烈措辞,催第三方项目现在就完成测试,把Python 3.15的wheel传到PyPI。
这条消息本身不新鲜,语言团队每年都走一遍同样的流程。真正该盯的是兼容性窗口——它从RC2这一刻开始倒计时。普通用户不用着急,但维护C扩展库、或者管着公司CI流水线的人,接下来几周的动作直接决定10月之后会不会踩坑。
RC2之后:只剩缺陷修复,没有新功能
进入RC阶段后,Python的规则很硬:代码变更必须经审查,且只能是明确的bug修复。新特性、API调整一律不再合并。
这意味着现在这版Python 3.15的行为,基本就是10月正式版的行为。
需要提一句审慎的限定:官方把RC2称为"最后一个候选版本",是按计划走的说法。如果测试期间冒出紧急缺陷,不排除还会有RC3,历史上不是没发生过。
对Python本身,剩下的变数已经不多。真正的变数留给下面这类项目。
C扩展库和纯Python项目,风险不是一回事
这次公告的紧迫感不是喊给所有Python开发者听的。风险高低取决于项目类型:
| 项目类型 | RC阶段的风险 | 现在该做的事 |
|---|---|---|
| 纯Python库 | 较低,一般不用为每个Python版本单独编译 | 跑一遍测试套件,确认API没被吃掉的边界行为影响 |
| 含C扩展/编译型库(例如依赖Cython、原生绑定的项目) | 较高,需要针对3.15单独编译二进制wheel | 现在就在RC2上编译、上传wheel到PyPI |
官方给出的承诺是:基于Python 3.15 RC构建的二进制wheel,会兼容后续所有3.15系列版本。这个承诺只覆盖3.15这一条线,不代表跨Python大版本、跨平台或跨架构自动兼容。
Simon Willison提到自己2021年的教训。那次他在Python 3.10正式发布之后才跑测试套件,才发现一个bug——但缺陷已经跟着正式版发出去了。此后他把RC阶段的测试当成必修课,每次RC期都主动跑一遍。这基本是本次公告想说的同一件事:等正式版出来再测,已经晚了。
对负责CI和依赖升级的工程团队,现实的动作是现在就把3.15加进测试矩阵,看核心依赖有没有报错、编译扩展有没有崩溃。对要升级生产环境的团队,更稳妥的做法是等正式版落地、且核心依赖确认发了兼容wheel之后再排期迁移,不用现在拿生产环境测RC。
GitHub Actions还没跟上,先用手动配置顶替
RC2本身已经发布,但GitHub Actions托管的Python版本还没同步上线。这两件事是分开的,不代表RC2用不了CI,只是主流CI平台的预置镜像还没更新完,需要盯着actions/python-versions的发布页面。
在这之前,可以在CI矩阵里手动加上3.15:
strategy:
matrix:
python-version: ["3.14", "3.15"]
steps:
- uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
check-latest: true
allow-prereleases和check-latest这两个参数的作用是自动跟进版本:今天会抓到RC1,RC2上线后自动切到RC2,等正式版发布再自动切过去,不用手动改配置。
这件事跟大多数写业务代码的Python开发者关系不大。真正相关的是两类人:发布PyPI包、尤其是带原生扩展的维护者,和管着公司CI流水线的工程师。现在到10月之间,就是他们的窗口期。
