pip Changelog(更新日志)指南:读懂 NEWS.rst 与 news 片段的工作机制
pip Changelog更新日志指南读懂 NEWS.rst 与 news 片段的工作机制【免费下载链接】pipThe Python package installer项目地址: https://gitcode.com/gh_mirrors/pi/pippip 是 Python 生态中最核心的包安装工具本仓库即其源码仓库项目描述为 The Python package installer。本文以仓库中的 docs/html/news.rst 与根目录 NEWS.rst 为骨架系统讲解 pip 更新日志的组织方式由 Sphinx 指令pip-news-include自动嵌入的完整发布历史自 19.0 到 26.2.1 共 4900 行由 towncrier 维护、位于news/目录下的未发布变更片段以及它们的分类体系Features、Bug Fixes、Vendored Libraries 等。读完本文你将掌握如何读懂任何 pip 版本的功能演进脉络、如何在提交中编写规范的 news 片段以及如何从更新日志反查对应源码实现。更新日志的入口与组装机制docs/html/news.rst全文极短是一个典型的入口 指令型文档 Changelog .. attention:: Major and minor releases of pip also include changes listed within prior beta releases. .. towncrier-draft-entries:: Not yet released .. pip-news-include:: ../../NEWS.rst它只承担三件事标题与提示用.. attention::提醒读者pip 的主要major和次要minor版本发布内容中也包含此前所有 beta 版本中列出的变更——即更新日志是累积的查阅某个正式版本时应连同上一个正式版本之后的 beta 条目一起看。未发布草稿条目.. towncrier-draft-entries:: Not yet released由 Sphinx 的 towncrier 扩展生成展示尚未正式发布版本的变更片段即 news/ 目录下的内容。发布历史嵌入.. pip-news-include:: ../../NEWS.rst是 pip 自定义的 Sphinx 指令实现位于 docs/pip_sphinxext.py 中的PipNewsInclude类。它读取相对该文档上级目录的 NEWS.rst并对每个版本标题自动生成稳定的锚点def _iter_lines_with_refs(self, lines: Iterable[str]) - Iterator[str]: Transform the input lines to add a ref before each section title. Dots in the version is converted into dash, and a v is prefixed. This makes Sphinx use them as HTML id verbatim without generating auto numbering (which would make the anchors unstable). 即版本号26.2.1会被转换为v26-2-1形式的 HTML 锚点从而保证跨文档引用的稳定性。任何其他文档需要引用某个 pip 版本的更新日志时均可借助该锚点精确定位。注意这条指令中的../../NEWS.rst是文档内部相对路径在仓库中实际指向根目录的 NEWS.rst。发布历史的结构版本、分类与条目NEWS.rst 是 pip 的官方 Changelog 主体按版本倒序组织——最新版本在最上方。每个版本区块采用一致的骨架版本号 (发布日期) 分类标题 ---------- - 变更条目附 issue 链接以当前最新版本 26.2.12026-08-04为例26.2.1 (2026-08-04) Bug Fixes --------- - Reallow keyring installed in a (non-activated) virtual environment to be be used via the import provider method while installing build dependencies. (#14227 https://github.com/pypa/pip/issues/14227_)从源码结构看pip 更新日志沿用了 PEP 8 风格的文档分类惯例历史上出现过以下几类标题分类标题含义典型示例NEWS.rst 行号Features新功能/新选项--only-deps、--no-require-hashes、pylock 支持等Bug Fixes缺陷修复安全修复CVE、崩溃修复、行为修正Deprecations and Removals弃用与移除丢弃旧 Python 版本、移除废弃参数Vendored Libraries内嵌依赖升级certifi、urllib3、packaging 等版本升级Improved Documentation文档改进修正文档链接、补充说明Process开发流程变化CI/CD、SBOM、AI 政策等Enhancements性能与体验增强26.1 中的解析提速、内存优化需要说明的是Enhancements类目只在少数版本如 26.1中出现多数版本将其合并进Features或Bug Fixes这是 pip 更新日志在不同时期分类口径的差异阅读历史版本时不必惊讶。条目书写规范每个条目都有两个硬性要求必须描述用户可感知的行为变化而不是内部实现细节必须附带 GitHub issue/PR 编号链接形如(#14227 https://github.com/pypa/pip/issues/14227_)方便读者回溯讨论与实现。文件开头还有一段面向维护者的说明NEWS.rst 第 1–10 行不要在 NEWS.rst 中直接新增条目该文件由 towncrier 工具管理新增变更应写在news/目录下的片段文件中。news/ 目录towncrier 片段机制news/ 目录是未发布变更的暂存区当前仓库中共有 14 个片段文件命名遵循 towncrier 约定issue编号.类型.rst13084.bugfix.rst 14160.trivial.rst 14171.bugfix.rst 14177.trivial.rst 14235.feature.rst 14237.bugfix.rst 8573.bugfix.rst 9456.bugfix.rst certifi.vendor.rst distlib.vendor.rst msgpack.vendor.rst packaging.vendor.rst platformdirs.vendor.rst例如news/14235.feature.rstSpeed up installing a wheel with console scripts by not resolving every PATH entry.—— 这是编号 14235 的新功能条目news/13084.bugfix.rstFix pips self version check reporting an outdated version from the environment instead of the running pip when run as a zipapp.—— 修复以 zipapp 方式运行时自检版本误报的缺陷news/9456.bugfix.rstKeep --version available only for pip and prevent its use in subcommands.形如certifi.vendor.rst的片段用于记录 vendor内嵌依赖升级对应的发布分类是Vendored Libraries。这些片段在发布时由 towncrier 合并进 NEWS.rst同时片段文件被清空。合并行为由 pyproject.toml 中的[tool.towncrier]配置控制[tool.towncrier] # 片段存放目录 directory news/ # 片段渲染模板 template tools/news/template.rst片段模板位于 tools/news/template.rst它定义了每个版本区块的分类顺序与标题样式。此外pyproject.toml 还约束了文档构建时使用的 towncrier 相关依赖towncrier 24与sphinxcontrib-towncrier 0.2.0a0sphinxcontrib-towncrier正是.. towncrier-draft-entries::指令的提供者。从更新日志反查源码以 26.2 的索引缓存刷新为例更新日志最大的价值在于每个条目都能在源码中找到对应实现。以 26.2 引入的索引响应缓存刷新机制为例Cache simple responses in accordance to theirCache-Controlheader instead of always revalidating on every request. To refresh cached package index responses and ensure newly published packages are found, use--refresh-package package.在 src/pip/_internal/cli/cmdoptions.py 中可以看到对应的选项定义约第 1027–1032 行def refresh_package() - Option: ... --refresh-package, destrefresh_package, ...其回调_handle_refresh_package会校验参数个数refresh_package随后被注册到索引相关选项组第 1392 行附近。这印证了 NEWS 中--refresh-package package用于刷新某个包的索引缓存的用法——该选项正是为配合 26.2 的Cache-Control缓存语义而新增。同一版本的另一个相关条目也与之呼应Newly published packages will no longer be immediately visible to pip if the index uses caching. To install a newly published package, use--refresh-package.这意味着升级到 26.2 后如果索引启用了缓存新发布包不会立即可见需要显式--refresh-package才能强制刷新这是更新日志中Deprecations and Removals类目下的一条重要行为变更值得所有依赖内部索引或私有源的用户留意。版本演进的时间线速览26.x 与 25.x 重点从 NEWS.rst 可梳理出近年 pip 的演进主线26.2.1 / 26.22026-07 ~ 2026-08支持 Python 3.15#14208新增--only-deps、--no-require-hashes、--no-proxy-env选项索引响应按Cache-Control缓存配合--refresh-package使用约束文件含PIP_CONSTRAINT不再影响隔离构建环境改用--build-constraint/PIP_BUILD_CONSTRAINT实验性--use-featurevenv-isolation以标准虚拟环境隔离构建子进程修复 CVE-2026-13346链接文件名 URL 路径双重解码问题支持pylock.toml的upload-time字段--uploaded-prior-to可配合-r pylock.toml。26.1 / 26.1.1 / 26.1.22026-04 ~ 2026-05放弃 Python 3.9#13795实验性支持从标准化pylock.toml读取需求-r pylock.tomlPEP 751 方向--uploaded-prior-to支持天数时长如P3D复杂的依赖冲突场景下解析提速、大依赖树内存占用下降。26.0 / 26.0.12026-01 ~ 2026-02命令行帮助输出彩色化支持 PEP 723 内联脚本元数据安装--requirements-from-script新增--all-releases、--only-final、--uploaded-prior-to选项实验性--use-feature inprocess-build-deps同进程安装构建依赖更快且可靠支持--no-clean、--no-cache-dir删除 egg 片段中非裸项目名的支持。25.32025-10移除setup.py develop旧式 editable 支持要求 setuptools 64移除--global-option/--build-option--config-settings成为唯一入口新增--build-constraint构建约束pip 自身构建改用 flit-core不影响用户安装行为。25.2 / 25.1 / 25.1.12025-04 ~ 2025-07声明支持 Python 3.14下载断点续传与重试默认开启--resume-retries控制重试次数新增--groupPEP 735 Dependency Groups 安装新增实验性pip lock命令PEP 751放弃 Python 3.8Python 3.14 不再允许使用pkg_resources元数据后端支持 PEP 738 Android wheels、iOS wheelsPEP 73024.3。更早的重要里程碑24.xpip 自身以 GitHub Actions 可信发布 PEP 740 数字签名系统证书与 certifi 证书同时用于 HTTPS 校验--use-deprecatedlegacy-certs可回退http-v2新磁盘缓存格式内存占用更低。23.x--break-system-packagesPEP 668 EXTERNALLY-MANAGED--keyring-providerper-requirement--config-settings新增-C短选项。22.x--dry-run、pip inspect、PEP 691 JSON 索引、truststore 后端、--report安装报告、PEP 723。21.xPython 2 支持移除21.0新 resolver 默认启用20.3 起PEP 610 editable 检测。20.xpip cache命令、pip debug命令、新 resolver2020-resolverbeta 到默认的演进、manylinux2010/2014 支持。内嵌依赖Vendored Libraries的变更记录pip 将大量第三方库以 vendor 方式内嵌在 src/pip/_vendor/ 下每次升级都会在更新日志的Vendored Libraries分类中列出。以 26.2 为例Vendored Libraries ------------------ - Upgrade certifi to 2026.6.17 - Upgrade distlib to 0.4.2 - Upgrade idna to 3.18 - Upgrade platformdirs to 4.10.0 - Upgrade pygments to 2.20.0 - Upgrade requests to 2.34.2 - Upgrade tomli to 2.4.1 - Upgrade urllib3 to 2.7.0内嵌依赖的完整清单记录在 src/pip/_vendor/vendor.txt而各依赖的补丁位于 tools/vendoring/patches/如certifi.patch、requests.patch、urllib3.patch等。26.2 还新增了一项流程性变更在 vendored 库旁附带 CycloneDX SBOM软件物料清单文件仓库中可找到 src/pip/_vendor/bom.cdx.json。结合更新日志与这些文件可以完整审计 pip 内嵌依赖的来源、版本与修补情况。如何利用更新日志排查升级影响升级 pip 前建议按以下顺序阅读更新日志看Deprecations and Removals确认自己依赖的选项、环境变量或行为是否被移除。典型例子26.2 起PIP_CONSTRAINT不再影响隔离构建环境25.3 移除--global-option26.1 放弃 Python 3.9。看Features中带experimental或use-feature的条目这些功能尚未默认启用若希望提前体验可显式打开如--use-featurevenv-isolation、--use-featureinprocess-build-deps。看Bug Fixes中的安全条目带 CVE 编号的修复如 26.2 的 CVE-2026-13346应优先升级。看Vendored Libraries若你所在环境依赖特定 CA 证书或 HTTP 行为certifi / requests / urllib3 的升级值得关注。对照测试仓库 tests/ 下有大量与更新日志条目对应的回归测试如test_refresh_package.py、test_lock.py、test_utils_pylock.py需要深入了解某条变更的实现细节时可据此反查验证逻辑。总结pip 的更新日志体系由三层组成docs/html/news.rst入口 指令、NEWS.rst已发布的完整历史由 towncrier 管理与news/未发布片段。理解这套机制后你既可以快速追踪 pip 的功能演进索引缓存刷新、pylock、venv-isolation 等都是近年主线也能规范地参与贡献——为新变更在news/目录添加符合命名规范的片段而非直接修改 NEWS.rst。更新日志是通往源码的最佳索引配合 docs/pip_sphinxext.py 的指令实现、src/pip/_internal/cli/cmdoptions.py 的选项定义与 tests/ 中的回归测试你可以对任何一条历史变更做到文档可读、源码可查、测试可验。【免费下载链接】pipThe Python package installer项目地址: https://gitcode.com/gh_mirrors/pi/pip创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PiKVM KVMD 2.3 发布解析:dhcpcd 崩溃修复、IPMI Serial-over-LAN 与 streamer 增量配置

PiKVM KVMD 2.3 发布解析:dhcpcd 崩溃修复、IPMI Serial-over-LAN 与 streamer 增量配置

文档教程 【免费下载链接】pikvm Open and inexpensive DIY IP-KVM based on Raspberry Pi 项目地址: https://gitcode.com/gh_mirrors/pi/pikvm 点击查看 免费下载 KVMD 2.3 是 PiKVM 在 2020 年 10 月发布的一次关键版本更新,核心是解决发行版升级后新…

2026/9/24 16:14:22 阅读更多 →
banner4cj轮播动效大全:8种翻页动画(缩放、3D旋转、叠层)实战效果对比

banner4cj轮播动效大全:8种翻页动画(缩放、3D旋转、叠层)实战效果对比

banner4cj轮播动效大全:8种翻页动画(缩放、3D旋转、叠层)实战效果对比 【免费下载链接】banner4cj 广告图片轮播控件 项目地址: https://gitcode.com/Cangjie-TPC/banner4cj banner4cj 是一个用仓颉语言开发、面向鸿蒙系统的广告图片轮…

2026/9/24 16:14:22 阅读更多 →
shadcn-vue Separator 组件完全指南:安装、源码解析与水平/垂直分隔实战

shadcn-vue Separator 组件完全指南:安装、源码解析与水平/垂直分隔实战

UI组件前端 【免费下载链接】shadcn-vue Vue port of shadcn-ui 项目地址: https://gitcode.com/gh_mirrors/sh/shadcn-vue 点击查看 免费下载 Separator(分隔线)是界面中最常用的视觉元素之一,用于在内容区块之间建立清晰的分隔…

2026/9/24 16:14:22 阅读更多 →

最新新闻

离线知识服务器搭建实战:Kiwix+Ollama实现断网AI问答

离线知识服务器搭建实战:Kiwix+Ollama实现断网AI问答

说实话,这个项目是我被网络逼出来的。去年去一个偏远项目现场,网络差到连搜索都打不开,临时要查一个设备说明,翻遍手机缓存也没找到,最后只能打电话回去让人查了再念给我听。那种憋屈感让我下了一个决心——搞一台完全…

2026/9/24 20:29:46 阅读更多 →
AI视频翻译如何做脚本、配音、字幕三合一核对?跨境电商实操方案

AI视频翻译如何做脚本、配音、字幕三合一核对?跨境电商实操方案

做跨境商品视频的朋友,应该都有过这种体验:一条源语言视频拍好了,想铺到多个海外市场,AI翻译工具一键生成多语言版本,速度确实快,但生成出来的东西你敢直接发吗?我拿到Gemini 3.5 Live Translat…

2026/9/24 20:29:46 阅读更多 →
大模型Skill适配实操:从提示词到Function Calling的完整方案

大模型Skill适配实操:从提示词到Function Calling的完整方案

“同个skill怎么适配不同大模型”这个问题,基本上每个认真做过大模型应用开发的人都会撞上。我最早是在一个agent项目里被问住的:同一个“查天气”的skill,在OpenAI上跑得好好的,换到国产模型上就开始胡说八道,工具调用…

2026/9/24 20:29:46 阅读更多 →
数字人+大模型知识引擎:从形象驱动到知识交互的落地实践

数字人+大模型知识引擎:从形象驱动到知识交互的落地实践

1. 数字人项目为什么突然又火了:从“壳”到“脑”的转折点数字人这个概念其实不新鲜。早几年做虚拟主播、虚拟客服的团队一抓一大把,但大多数项目最后都卡在同一个地方:形象做得再精致,一开口就露馅。用户问东,它答西&…

2026/9/24 20:29:46 阅读更多 →
电池健康度SOH预测:BP神经网络建模与部署实战

电池健康度SOH预测:BP神经网络建模与部署实战

简介:这套基于神经网络与真实电池充放电数据构建的锂离子电池健康度(SOH)估算项目,面向电池管理、计算机、人工智能等相关专业的学生、研究者和工程师,可解决容量衰减与内阻增加等老化指标的建模与预测问题。资源共41个…

2026/9/24 20:29:46 阅读更多 →
ARIMA销量预测实战:从数据预处理到置信区间备货

ARIMA销量预测实战:从数据预处理到置信区间备货

简介:这是一份面向Python数据分析与机器学习学习者的“ARIMA时间序列销量预测”完整项目资料,适合毕业设计、期末大作业或课程设计场景。资源以statsmodels为核心,覆盖序列平稳化、AR/MA过程、自动定阶与参数估计、模型检验等完整流程&#x…

2026/9/24 20:28:46 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →