Python 26:安装通过为何不等于发布通过
第25 篇生成的 wheel在 CPython 3.12.3 的干净 venv 能运行 tasklab 命令。但用 pip 的目标版本选项要求按 Python 3.11 解析同一 wheel,得到的是 requires a different Python: 3.11.0 not in '>=3.12',退出 1。这条反例不需要假装机器装了 3.11:它证明打包元数据会在解析阶段排除 3.11,却不能证明一个真实 3.11 解释器的运行表现。版本声明、解析结果和已经安装的环境应分开记录。
本篇只检查本地制品及发布前材料,不推送 Git、不上传 PyPI、不部署博客。所谓发布成功至少要有索引上传和可下载的外部制品记录;本地安装正常不能替代这些证据。
给同一制品三种身份
pyproject.toml 声明项目版本 0.1.0、支持 >=3.12、运行依赖为空;这些是作者写在构建输入中的约束。tools/audit_release.py 读取实际 wheel 的 METADATA 和 WHEEL,又对照 sdist 的 PKG-INFO:两边名称和版本一致,Requires-Python 相同,wheel 标签为 py3-none-any,没有 Requires-Dist。标签说明轮子不依赖特定 CPython ABI 或平台标签,不等于它在每个 Python 3.x 上都可以安装;Requires-Python >=3.12 仍参与解析。
在离线 --find-links artifacts 中,pip download --python-version 3.12 实际选出目标 wheel,副本 SHA-256 与原制品一致;用 --python-version 3.11 则被版本声明拒绝。这个检查只是 pip 在给定目标版本上的解析,不是启动真实的 3.11;当前机器仅运行冻结的 /usr/bin/python3.12,其他 patch、构建模式和架构的真实兼容性统一保留 NOT_RUN。解析用的是 25 的 pip 25.2 与本地仓库制品,而不是默认去 PyPI 下载同名包。
校验的是字节,也要核对来源
对照 25 的原始 artifacts.sha256,本地 wheel、sdist 两项的 sha256sum -c 都通过。另复制 wheel 到 /tmp,修改副本最后一字节而不改仓库制品,用原 wheel 的摘要去验副本,得到 FAILED、退出 1。哈希能识别与已记录字节不一致的文件;若攻击者连可信摘要也能一起替换,单看“校验通过”就无法追究制品来源。仓库保留原制品、哈希和构建命令,仍没有做签名、TUF 元数据或第三方供应链审计。
在仅安装 wheel 的环境中,tools/check_release_install.py 再次从非源码工作目录以独立 CLI 进程提交中文任务,执行后查询 {"字": 2},随后提交含非法 UTF-8 的文件:输入退出 2,标准输出为空,原成功任务仍可查询。这样把制品检查、解析检查和本机实际业务运行连接起来,而不是仅看 pip install 的零退出码。循环读取文件、进程并发、网络 JSON 行服务和性能不是这次安装复测项目。
1 | |
examples/python-language/evidence/26/20261007-compat/ 保留两个目标版本的解析标准流与退出码、实际安装环境的输入结果、篡改反例、累计回归、环境与页面记录。材料检查只确认现有元数据、README、入口与本地 SHA-256;项目还未整理公开发布所需的授权、索引凭据和发布流程,也没有 sdist 的安装复测。本文绝不把“发布材料已检查”写成“包已经发布”。
预测题
wheel 文件名含 py3-none-any,但元数据写 Requires-Python: >=3.12。在没有 Python 3.11 解释器的机器上,能够断言什么?
答案:可用 pip 的目标版本解析实验验证:要求 3.11 时拒绝,要求 3.12 时接受该候选 wheel;不能声称真实 3.11 运行中抛了什么异常,也不能单凭文件名推断所有 Python 3.x 都兼容。实际运行只测到 CPython 3.12.3 普通构建。
变更题
将下载来的 wheel 某个字节改掉,但仍用原 artifacts.sha256 验证,会发生什么?若同时修改预期摘要呢?
答案:本章对副本修改一个字节,实际校验退出 1。若再篡改预期摘要,数学上的“字节等于新摘要”可能成立,但证据链失去可信来源;应从受信任仓库记录、构建环境及分发渠道追踪摘要。本章未测试外部索引、签名与密钥轮换。
27 转向同一任务的等待与计算成本。在出现线程、进程或 asyncio 之前,先保持提交、执行、查询与取消的单一业务合同。系列导航只链接实际验收页面。




