Python 3.15.0 Candidate 2 发布:正式版前的最后测试窗口

2026-09-01 28 预计阅读时间: 1 分钟
来源: blog.python.org AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:6 分钟

Python 3.15.0 candidate 2 已经到来。这是正式版发布前的重要测试节点,也意味着项目维护者、库作者和日常开发者应当抓住最后机会验证兼容性,尽早发现升级后可能暴露的问题。

Candidate 2 意味着什么

Candidate 2 可以理解为正式版前的候选版本。它的重点不再是让开发者尝试大量新想法,而是帮助社区确认现有代码、第三方依赖和构建流程是否能够稳定运行。

这次版本测试适合覆盖几类场景:

  • 项目能否正常创建虚拟环境并安装依赖
  • 单元测试、集成测试和命令行入口是否通过
  • 使用 C 扩展或二进制依赖的包能否完成安装
  • CI 配置是否支持新的 Python 解释器
  • 生产代码中是否依赖了即将变化的行为

候选版本不应直接替换生产环境中的稳定解释器。更稳妥的做法是为它单独准备测试环境,并保留现有版本作为回退路径。

用隔离环境验证项目

下面的命令假设系统已经提供了 python3.15 可执行文件。请把 demo-project 替换成你的项目目录,并根据项目实际情况调整依赖安装命令。

cd demo-project
python3.15 --version
python3.15 -m venv .venv-py315
. .venv-py315/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pytest

如果项目没有 requirements.txt,可以直接安装项目本身及其测试依赖:

python -m pip install -e '.[test]'
python -m pytest -q

建议将候选版本的测试结果单独记录下来,包括失败的测试名称、依赖版本、操作系统以及编译器信息。这样可以区分 Python 版本变化、第三方包尚未适配和项目自身问题。

一个最小的版本检查脚本

可以把下面的脚本保存为 check_python315.py,在 Candidate 2 环境中运行。它不会假设 Python 3.15 的具体新特性,只检查解释器版本并执行一段普通应用逻辑,因此适合作为环境连通性检查。

import platform
import sys


def build_report() -> dict[str, str]:
    return {
        "python": platform.python_version(),
        "implementation": platform.python_implementation(),
        "platform": platform.platform(),
    }


if __name__ == "__main__":
    report = build_report()
    if sys.version_info[:2] != (3, 15):
        raise SystemExit(
            f"expected Python 3.15, got {report['python']}"
        )

    for key, value in report.items():
        print(f"{key}: {value}")

运行方式:

python check_python315.py

这类检查不能替代完整测试套件,但能快速确认 CI job 或本地虚拟环境确实使用了目标解释器,而不是系统默认的其他 Python 版本。

测试时要关注的边界

升级验证不只是执行一次 pytest。对于有原生扩展、网络服务或数据处理任务的项目,还应重点观察构建和运行时行为:

  • 重新安装所有二进制依赖,确认没有偷偷复用旧环境中的构建产物
  • 检查警告输出,尤其是弃用警告和运行时异常
  • 对序列化、日期时间、并发、文件系统和编码相关代码执行回归测试
  • 在 CI 中增加一个隔离 job,而不是立刻修改所有流水线的默认 Python 版本
  • 对性能敏感的任务记录基准数据,避免把版本差异误判为业务代码回归

如果某个依赖尚未支持 Candidate 2,应先确认它的发布说明和兼容性声明,再决定是等待适配、临时固定版本,还是在测试矩阵中标记为已知限制。

上线前检查清单

Python 3.15.0 candidate 2 是“最后机会测试”的信号。项目可以按以下顺序推进:

  1. 在独立虚拟环境中安装依赖并执行完整测试。
  2. 在 CI 中加入 Python 3.15 的非阻塞或允许失败任务。
  3. 修复项目自身的兼容性问题,并记录第三方依赖的已知限制。
  4. 等正式版发布后重新运行测试,再评估生产环境升级窗口。

候选版本适合用来暴露问题,不适合用来跳过验证流程。越早在隔离环境中测试,正式版到来时需要处理的变更就越少。


相关推荐