WinPython-64bit 3.8.12.3PyPy 变更日志全解析:包清单、升级明细与 changelog 生成机制
发布时间:2026/10/16 2:59:03 锦皓数字建站

开发工具构建工具CLI包管理器【免费下载链接】winpythonA free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.项目地址https://gitcode.com/gh_mirrors/wi/winpython点击查看免费下载本篇文章以仓库 changelogs/WinPythonPyPy-64bit-3.8.12.3_History.md 为核心逐条解读 WinPython-64bit PyPy flavor 从 3.8.12.2PyPy 到 3.8.12.3PyPy 的全部变更包括工具链升级、7 个新引入的 Python 包、136 个升级包与 4 个移除包并结合仓库中 wppm/diff.py、winpython/build_winpython.py 等源码讲清楚这份_History.md究竟是怎样被自动生成出来的以及读者如何用wppm -diff自行重放与验证版本对比。一、这份文档是什么WinPython 发行版的“版本差异报告”WinPython 是一个面向 Windows 平台的自由 Python 发行版项目仓库 README.rst 将本仓库定位为wppm包与构建工具链仓库。在changelogs/目录下每个发行版本都有两类 Markdown 文件包索引如 changelogs/WinPythonPyPy-64bit-3.8.12.3.md列出该版本当前完整包含的 Tools 与 Python 包及其版本历史变更如本文对应的WinPythonPyPy-64bit-3.8.12.3_History.md以“自上一版本以来发生了什么变化”为视角仅列出New / Upgraded / Removed三个类别的差异。3.8.12.3PyPy表明这是一个64 位、面向 PyPy 运行时的 flavor其包索引中声明的 Python 解释器版本为 3.8.12见 changelogs/WinPythonPyPy-64bit-3.8.12.3.md。整个 PyPy 系列在changelogs/中还有3.7.10.0、3.7.12.0、3.8.12.2等多个历史版本3.8.12.3是该系列的后续维护版本。本版变更的对比基准是上一版3.8.12.2PyPy其对应的历史文件为 changelogs/WinPythonPyPy-64bit-3.8.12.2_History.md。对比结果按原文档结构分为两大块### Tools独立工具链与### Python packagesPython 包的新增 / 升级 / 移除。二、工具链Tools变更Node.js 与 npm 的例行升级本版本对随发行版附带的独立工具仅做了两项升级属于典型的“跟随上游小版本”式更新工具版本变化说明Nodejsv16.14.2 →v16.16.0基于 Chrome V8 引擎的 JavaScript 运行时npmjs8.5.0 →8.11.0JavaScript 包管理器这两项变更均未涉及大版本跳跃主要收益是安全修复与稳定性提升。对于在 WinPython 中同时使用 Jupyter 生态、前端工具链或 Node 驱动的扩展如 jupyterlab 前端构建的用户升级后的 npm 8.11.0 与 Node v16.16.0 配合更佳。三、新增包New packages7 个新成员与其真实用途本版一次性引入 7 个新包它们并非彼此孤立而是分别服务于几条清晰的技术主线包名版本官方描述argon2_cffi_bindings21.2.0面向 Argon2 的低层 CFFI 绑定asttokens2.0.5为 AST 树标注源码位置executing0.8.3获取当前正在执行的 AST 节点等信息pure_eval0.2.2无副作用地安全求值 AST 节点pytoolconfig1.2.1配置工具供 rope 使用stack_data0.3.0从 Python 栈帧与 traceback 中提取数据用于信息展示xyzservices2022.6.0XYZ 瓦片服务提供商源数据从功能描述上可以梳理出三条主线IPython 8 的 traceback 增强栈asttokens、executing、pure_eval、stack_data这四个包是 IPython 8 系列“超信息 tracebackultratb”的底层依赖——stack_data负责从栈帧与回溯中提取结构化数据executing定位当前执行节点pure_eval与asttokens则用于安全地还原表达式求值结果。它们的引入与本版将 ipython 从 7.32.0 升级到 8.4.0 直接配套。Argon2 密码哈希的完整依赖链argon2_cffi_bindings 21.2.0与升级后的 argon2_cffi 21.1.0 → 21.3.0 一一对应——前者是后者的低层 CFFI 绑定即 Jupyter Notebook 登录鉴权所依赖的密码哈希组件。编辑与配置工具pytoolconfig 1.2.1是重构库 rope 升级到 1.2.0 后所需的配置解析层xyzservices 2022.6.0则为folium/rasterio等 GIS 可视化生态提供瓦片服务商清单本版同步升级了ipyleaflet 0.14.0 → 0.17.0、cartopy 0.20.2、gdal 3.4.3等地理空间组件。四、升级包全景Upgraded packages136 个包的完整清单原文档按字母序列出了全部升级项。为保证信息完整可检索以下按字母段拆分为三张表版本列均采用原文档的“旧版 → 新版”格式4.1 A–H 段43 个包名版本变化说明alembic1.7.7 → 1.8.0SQLAlchemy 数据库迁移工具anyio3.5.0 → 3.6.1多异步事件循环兼容层argon2_cffi21.1.0 → 21.3.0Argon2 安全密码哈希算法asgiref3.5.0 → 3.5.2ASGI 规范与适配器asteval0.9.26 → 0.9.27基于 ast 的安全极简表达式求值器astroid2.11.3 → 2.11.5带推断支持的 Python 抽象语法树babel2.10.1 → 2.10.3国际化工具black22.3.0 → 22.6.0不妥协的代码格式化器blis0.7.7 → 0.9.0自包含 C 扩展的 Blis BLAS 线性代数库bokeh2.4.2 → 2.4.3浏览器端交互式绘图cachetools5.0.0 → 5.2.0可扩展缓存集合与装饰器certifi2021.10.8 → 2022.5.18.1Mozilla CA 证书包cloudpickle2.0.0 → 2.1.0Python 对象扩展序列化支持cookiecutter1.7.3 → 2.1.1从项目模板创建项目的 CLI 工具coverage6.3.2 → 6.4.1Python 代码覆盖率测量cython0.29.28 → 0.29.30Cython 编译器dash2.3.0 → 2.4.1Plotly 开发的响应式 Web 应用框架dask2022.4.2 → 2022.7.0带任务调度的并行 PyDatadatasette_graphql2.0.1 → 2.0.2为 SQLite 数据库自动生成 GraphQL API 的插件debugpy1.6.0 → 1.6.2Debug Adapter Protocol 的 Python 实现dill0.3.3 → 0.3.5序列化整个 Python 对象distributed2022.4.2 → 2022.7.0Dask 分布式调度器emcee3.1.1 → 3.1.2MCMC 集成采样工具包fast_histogram0.10 → 0.11快速一维/二维直方图fastapi0.75.2 → 0.78.0高性能易上手的生产级 Web 框架fastcore1.3.27 → 1.4.5为 fastai 开发增强的 Pythonfastdownload0.0.5 → 0.0.7通用数据下载库fastprogress1.0.0 → 1.0.2带绘图选项的嵌套进度条filelock3.6.0 → 3.7.1跨平台文件锁fonttools4.31.2 → 4.34.4字体文件操作工具fsspec2022.3.0 → 2022.5.0文件系统规范抽象gdal3.4.2 → 3.4.3GDAL 地理空间数据抽象库graphene3.0 → 3.1Python GraphQL 框架graphql_core3.1.7 → 3.2.1GraphQL.js 的 Python 移植实现graphql_relay3.1.5 → 3.2.0graphql-core 的 Relay 库guidata2.1.1 → 2.2.1自动生成 GUI 以编辑/显示数据集h5py3.6.0 → 3.7.0读写 HDF5 文件holoviews1.14.8 → 1.15.0数据标注驱动的自动化可视化httpcore0.14.7 → 0.15.0极简低层 HTTP 客户端httpie3.1.0 → 3.2.1面向人类的 cURL 类 CLIhttpx0.22.0 → 0.23.0下一代 HTTP 客户端hvplot0.7.3 → 0.8.0基于 HoloViews 的高层绘图 APIhypothesis6.45.1 → 6.46.9基于属性的测试库4.2 I–P 段60 个包名版本变化说明imageio2.17.0 → 2.19.3图像/视频/科学数据格式读写库imagesize1.3.0 → 1.4.1获取 png/jpeg/jpeg2000/gif 图片尺寸imbalanced_learn0.9.0 → 0.9.1不平衡数据集机器学习工具箱importlib_metadata4.11.3 → 4.11.4读取已安装包的元数据importlib_resources5.7.1 → 5.8.0读取包资源文件ipycanvas0.11.0 → 0.12.0暴露浏览器 Canvas API 的交互组件库ipykernel6.13.0 → 6.15.1Jupyter 的 IPython 内核ipyleaflet0.14.0 → 0.17.0动态 Leaflet 地图 Jupyter 组件ipython7.32.0 → 8.4.0IPython高效交互式计算ipywidgets7.7.0 → 7.7.1Jupyter HTML 组件json50.9.6 → 0.9.8JSON5 数据格式的 Python 实现jsonschema4.4.0 → 4.6.2JSON Schema 校验实现jupyter_client7.3.0 → 7.3.4Jupyter 协议实现与客户端库jupyter_console6.4.3 → 6.4.4Jupyter 终端控制台jupyter_core4.10.0 → 4.11.1Jupyter 核心基础包jupyter_packaging0.12.0 → 0.12.2Jupyter 打包工具jupyter_server1.17.0 → 1.18.1Jupyter Serverjupyter_sphinx0.3.2 → 0.4.0Jupyter Sphinx 扩展jupyterlab3.3.4 → 3.4.3JupyterLab 笔记本服务器扩展jupyterlab_server2.13.0 → 2.14.0JupyterLab Serverkiwisolver1.4.2 → 1.4.3Cassowary 约束求解器的高效实现lxml4.8.0 → 4.9.0基于 libxml2/libxslt 的 XML 处理lz44.0.0 → 4.0.1LZ4 压缩绑定markdown3.3.6 → 3.3.7Python Markdown 实现matplotlib3.5.1 → 3.5.2Python 绘图包maturin0.12.14 → 0.13.0用 pyo3/cffi 构建发布 Rust 扩展mpld30.5.7 → 0.5.8Matplotlib 的 D3 查看器msgpack1.0.3 → 1.0.4MessagePack 序列化/反序列化nbclassic0.3.7 → 0.4.2作为 Jupyter Server 扩展的 Notebooknbclient0.6.0 → 0.6.6执行笔记本的客户端库nbformat5.3.0 → 5.4.0Jupyter Notebook 格式netcdf41.5.8 → 1.6.0netCDF4 库的面向对象 Python 接口networkx2.8 → 2.8.3图与网络创建操作包notebook6.4.11 → 6.4.12基于 Web 的交互式笔记本环境numcodecs0.9.1 → 0.10.0数据存储/通信用缓冲压缩编解码器numexpr2.8.1 → 2.8.3面向 NumPy 的快速数值表达式求值器numpy1.22.3mkl → 1.22.4mkl数组计算基础包含 MKL 加速numpydoc1.2.1 → 1.3支持 Numpy 风格 docstring 的 Sphinx 扩展openpyxl3.0.9 → 3.0.10读写 Excel xlsx/xlsm 文件pandas1.4.2 → 1.4.3数据分析、时间序列与统计panel0.13.0 → 0.13.1高层应用与仪表盘方案param1.12.1 → 1.12.2声明式 Python 参数编程pathy0.6.1 → 0.6.2本地与云存储的 pathlib.Path 子类pillow9.1.0 → 9.1.1Python 图像处理库PIL 分支pims0.5 → 0.6.1Python 图像序列pip22.0.4 → 22.1.2PyPA 推荐的 Python 包安装工具pkginfo1.8.2 → 1.8.3查询 sdist/bdist 与已装包元数据plotly5.7.0 → 5.8.0开源交互式绘图库plotnine0.8.1.dev0 → 0.9.0Python 的图形语法ggplot2 风格prettytable3.2.0 → 3.3.0ASCII 表格展示工具proglog0.1.9 → 0.1.10控制台/笔记本/Web 日志与进度条pydantic1.9.0 → 1.9.1基于类型注解的数据校验与设置管理pyhdf0.10.3 → 0.10.5NCSA HDF4 库的 Python 接口pylint2.13.7 → 2.14.0Python 静态检查器pyshp2.2.0 → 2.3.0ESRI Shapefile 纯 Python 读写pyside66.3.0 → 6.3.1Qt 跨平台应用/UI 框架的 Python 绑定pyside6_addons6.3.0 → 6.3.1Qt 绑定Addons 附加组件pyside6_essentials6.3.0 → 6.3.1Qt 绑定Essentials 核心组件pythonnet3.0.0a2 → 3.0.0rc1.NET 与 Mono 集成pyzmq22.3.0 → 23.2.00MQ 的 Python 绑定4.3 Q–Z 段33 个包名版本变化说明qdarkstyle3.0.3 → 3.1最完整的 Qt 深色样式表qtconsole5.3.0 → 5.3.1Jupyter Qt 控制台qtpy2.1.0 → 2.2.0.dev0多 Qt 绑定抽象层redis4.2.2 → 4.3.1Redis 键值存储的 Python 客户端regex2022.3.15 → 2022.6.2替代 re 的增强正则模块reportlab3.6.9 → 3.6.10ReportLab 文档生成工具包rich12.3.0 → 12.4.4终端富文本/表格/进度条渲染rope1.0.0 → 1.2.0Python 重构库scikit_image0.19.2 → 0.19.3面向 SciPy 的图像处理例程scikit_learn1.0.1 → 1.1.1机器学习与数据挖掘模块scipy1.8.0 → 1.8.1SciPy 科学计算库setuptools62.1.0 → 63.1.0包安装/构建/升级工具链shapely1.8.1.post1 → 1.8.2几何对象、谓词与操作shiboken66.3.0 → 6.3.1Python/C 绑定辅助模块sphinx4.5.0 → 5.0.2基于 reStructuredText 的文档生成工具sqlalchemy1.4.35 → 1.4.39数据库抽象库starlette0.17.1 → 0.19.1轻量 ASGI 库terminado0.13.3 → 0.15.0基于 Tornado websocket 的终端服务tifffile2022.4.22 → 2022.5.4TIFF 文件读写tomlkit0.10.2 → 0.11.1保留风格的 TOML 库traitlets5.1.1 → 5.3.0Traitlets Python 配置系统trio0.20.0 → 0.21.0友好的异步并发与 I/O 库twine4.0.0 → 4.0.1在 PyPI 发布包的实用工具集typer0.4.1 → 0.4.2基于类型提示构建 CLItyping_extensions4.2.0 → 4.3.0Python 3.5 类型提示实验性扩展ujson5.2.0 → 5.3.0超快 JSON 编解码器urllib31.26.9 → 1.26.10带线程安全连接池的 HTTP 库uvicorn0.17.6 → 0.18.2极速 ASGI 服务器watchdog2.1.7 → 2.1.8文件系统事件监控websocket_client1.3.2 → 1.3.3WebSocket 客户端hybi13widgetsnbextension3.6.0 → 3.6.1Jupyter HTML 组件扩展winpython4.6.20220501 → 4.7.20220709WinPython 发行工具含 WPPMwrapt1.14.0 → 1.14.1装饰器、包装与 monkey patching 模块4.4 值得重点关注的升级WinPython 自身工具winpython 4.6.20220501 → 4.7.20220709“WinPython distribution tools, including WPPM”。作为本仓库的核心产物之一WPPM 工具链同步升级版本号中的日期后缀20220709暗示构建于 2022 年 7 月。Jupyter 全家桶jupyterlab 3.3.4 → 3.4.3、ipykernel 6.13.0 → 6.15.1、jupyter_server 1.17.0 → 1.18.1、ipython 7.32.0 → 8.4.0配合新增的stack_data等包交互式编程体验整体前移一个大版本。科学计算三件套numpy 1.22.3mkl → 1.22.4mkl、scipy 1.8.0 → 1.8.1、pandas 1.4.2 → 1.4.3均为维护性小升级scikit_learn 1.0.1 → 1.1.1则是 1.0 系列内的功能增强版。并行与分布式dask 2022.4.2 → 2022.7.0与distributed 2022.4.2 → 2022.7.0同步推进fsspec 2022.3.0 → 2022.5.0等外围文件抽象也随之更新。Web 服务栈fastapi 0.75.2 → 0.78.0、starlette 0.17.1 → 0.19.1、uvicorn 0.17.6 → 0.18.2、httpx 0.22.0 → 0.23.0整体升级直接相关的是本节后面将要讨论的httptools、watchgod移除。打包/发布工具pip 22.0.4 → 22.1.2、setuptools 62.1.0 → 63.1.0、twine 4.0.0 → 4.0.1、maturin 0.12.14 → 0.13.0。大版本跨越cookiecutter 1.7.3 → 2.1.1从 1.x 直接跳到 2.1.1、ipython 7 → 8、pythonnet 3.0.0a2 → 3.0.0rc1alpha 到 RC。五、移除包Removed packages4 个退出名单的包包名版本说明httptools0.4.0框架无关的 HTTP 协议工具集poyo0.5.0轻量 YAML 解析器watchgod0.8.2简单现代的文件监听与代码热重载websockets10.3WebSocket 协议RFC 6455 7692实现这四个移除项与升级项之间存在明显的连带关系可以从依赖链角度作出合理推断poyo它是cookiecutter 1.x时代的配置解析依赖本版cookiecutter大幅升级到2.1.12.x 重写了配置加载机制随之不再需要poyo故被移除。httptools / watchgod二者曾是uvicorn的优化/重载附属依赖本版uvicorn 0.17.6 → 0.18.2重构了相关实现后发行版不再打包这两个包。websockets该实现此前服务于 WebSocket 场景如uvicorn/starlette的可选依赖或terminado相关链路在相关组件升级后不再被发行版所需。需要说明的是以上依赖关系属于基于版本演进的推断仓库的 diff 机制本身只做“新旧索引对比”并不记录移除原因——这一点在下文源码分析中可以看到。六、溯源_History.md是如何自动生成的这份看似“人工维护”的变更日志实际上完全由构建工具链自动产出。整条链路在 winpython/build_winpython.py 的Step 7generate changelog中完成用wppm.Distribution().generate_package_index_markdown()生成当前版本的完整包索引WinPythonPyPy-64bit-3.8.12.3.md该方法定义见 wppm/wppm.py调用wppm.diff.compare_package_indexes(changelog_version, searchdirchangelog_dir, flavor..., architecture...)对比“上一版本索引”与“本版本索引”把差异写成_History.md历史文件的文件名由WinPython{flavor}-{arch}bit-{changelog_version}_History.md拼出如本文WinPythonPyPy-64bit-3.8.12.3_History.md。核心的对比逻辑位于 wppm/diff.pyPackageIndex类按### Tools、### Python packages、### WheelHouse packages三个区块解析索引文件对应PackageIndex.HEADERScompare_packages(old, new)将包名归一化-→_、转小写后求集合差只出现在新版的为 New两边都有但版本号不同的为 Upgraded只出现在旧版的为 Removed输出格式New packages / Upgraded packages / Removed packages正是原文档三个小节的结构升级行统一书写为旧版 → 新版。“上一版本”的选取由find_previous_version()完成wppm/diff.py它扫描changelogs/目录用正则WinPython{flavor}-{arch}bit-(.)\.(?:txt|md)$匹配文件名、以PEP 440规则解析版本号取“小于当前版本的最大版本”。这正是3.8.12.3的对比基准落在3.8.12.2上的原因。文件名因此成为“承重结构”——tests/test_diff_versions.py 专门验证了版本带 release level如3.14.7.1b1时仍能正确排序、不会被跳过_History.md这类伴生文件永远不会被当作“上一版本”目录中无关文件会被忽略。七、实战用wppm -diff重放与验证版本对比读者无需重新构建整个发行版即可在本地重放任意两次发布之间的差异。wppm的 diff 子命令支持两种输入形态用法见 wppm/diff.py形态一直接对比两个包索引文件wppm -diff WinPythonPyPy-64bit-3.8.12.2.md WinPythonPyPy-64bit-3.8.12.3.md该命令输出两个索引在 Tools / Python packages / WheelHouse packages 各区块的 New、Upgraded、Removed 列表方向由文件先后决定升级行恒为“旧 → 新”。形态二按版本号对比 changelogs 目录中的历史索引wppm -diff 3.8.12.3 3.8.12.2 changelogs PyPy 64 # 或 python -m wppm.diff 3.8.12.3 3.8.12.2 changelogs PyPy 64各位置参数依次为目标版本、基准版本、changelogs 目录、flavor此处为PyPy、架构位数64。形态三重新写出历史文件python -m wppm.diff --write-changelog 3.8.12.3 3.8.12.2 changelogs PyPy 64--write-changelog会把对比结果写回changelogs/WinPythonPyPy-64bit-3.8.12.3_History.md可选basedir参数可同时复制到其他目录。此外wppm/diff.py 还提供--section只比较指定区块与--pairs多区块配对比较两种细粒度模式例如--pairs python wheelhouse可只比较 Python 包与 WheelHouse 包的差异。注意 Windows 控制台默认编码可能是 cp1252而升级行包含→箭头字符因此脚本入口会对 stdout 重配置为 UTF-8见 wppm/diff.py在自行调用时也应留意编码问题。八、小结WinPython-64bit 3.8.12.3PyPy是一次典型的维护性发布工具链例行升级、7 个新包补齐 IPython 8 与 Argon2 依赖链、136 个包整体前移、4 个包随依赖重构退出。更重要的是它的_History.md是仓库构建工具链winpython/build_winpython.py wppm/diff.py wppm/wppm.py自动生成的产物理解这一机制后读者既能准确解读每一行“升级/移除”背后的语义也能用wppm -diff对任意两个版本自行做差异审计。赞分享开发工具构建工具CLI包管理器【免费下载链接】winpythonA free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.项目地址https://gitcode.com/gh_mirrors/wi/winpython点击查看免费下载相关推荐深入解析 Remote In Tech 目录中的 Chroma 公司档案全远程 UI 组件测试团队的数据与工作流深入解析 Remote In Tech 目录中的 Chroma 公司档案全远程 UI 组件测试团队的数据与工作流 导读 Chroma 是远程技术公司目录Re开发工具构建工具CLI包管理器WinPython-64bit 3.9.8.0 版本变更全解析自 3.9.5.0 以来的包升级清单与 changelog 生成机制WinPython 64bit 3.9.8.0 版本变更全解析自 3.9.5.0 以来的包升级清单与 changelog 生成机制 WinPython 是面向开发工具构建工具CLI包管理器WinPython 2.7.13.1Zero 发行版全解包清单、升级明细与 changelog 生成机制WinPython 2.7.13.1Zero 发行版全解包清单、升级明细与 changelog 生成机制 WinPython 2.7.13.1Zero 是 W开发工具构建工具CLI包管理器上一篇为什么AI算力集群这么烧钱Flex:ai解决大模型与小模型混部场景的GPU浪费难题下一篇如何给MHY_Scanner添加新游戏支持扫码登录器平台接入实战教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。