- 开发工具
- 构建工具
- CLI
- 包管理器
【免费下载链接】winpython
A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.
WinPython 是面向 Windows 平台的免费 Python 发行版,内置大量预编译的科学计算包。本文以仓库中 changelogs/WinPythonPyPy-64bit-3.8.12.2_History.md 为主线,完整梳理 PyPy flavor 从 3.7.12.0 升级到 3.8.12.2 期间的工具链更新、Python 内核跃迁、新增/升级/移除的全部 Python 包清单,并结合 wppm/diff.py 与 winpython/build_winpython.py 的源码实现,讲清这类_History.md伴生文档的生成原理与阅读方法。读完本文,你既能掌握这一版本的具体生态变化,也能理解 WinPython 发行版"包索引 + 变更历史"双文档体系的运作机制,并学会用wppm -diff自行对比任意两个版本的包清单。
一、版本背景:PyPy flavor 在 WinPython 发行版体系中的位置
WinPython 仓库通过 winpython_builds.toml 描述构建矩阵:一条构建是一个(python, flavor)二元组,basedir、requirements、source_dirs、toolsdirs等全部由该二元组派生。当前配置中的 flavor 有dot、dotf、slim、slimf和暂不构建的whl,而PyPy 是历史上存在过、现已不再出现在构建清单中的 flavor——这一点可以从 changelogs 目录中保留的WinPythonPyPy-64bit-*.md系列文档确认。
本文主角3.8.12.2PyPy属于 PyPy flavor 的 3.8 系列,紧邻的上一个版本是3.7.12.0PyPy(同系列更早还有3.7.10.0PyPy)。所谓"3.8.12.2"中的 3.8.12 是 PyPy 所实现的语言版本,随后的.2是 WinPython 对该 PyPy 发行版的构建修订号。变更历史文档正是以"自 3.7.12.0PyPy 以来"为基准,逐条列出工具与包的变化。
二、变更总览:本次版本动了什么
| 类别 | 变化概况 |
|---|---|
| Tools | Nodejs v14.17.6 → v16.14.2;npmjs 6.14.15 → 8.5.0 |
| Python 内核 | Python 3.7.12 → 3.8.12(PyPy 实现的语言版本) |
| 新增包 | 46 个(异步、Qt/GUI、科学计算、.NET 集成、Web、开发工具等) |
| 升级包 | 约 150 个(覆盖科学计算、Jupyter、Web、数据库、GIS 全生态) |
| 移除包 | 28 个(含 spaCy NLP 全家桶、voila、astropy、llvmlite 等) |
从数量上看,这是一次大版本性质的升级:Python 语言版本从 3.7 跃升到 3.8,同时刷新了发行版内几乎全部预编译包。
三、Tools 升级:前端工具链整体换代
文档 "Tools" 部分记录了两个随发行版分发的前端工具升级:
- [Nodejs]v14.17.6 →v16.14.2:基于 Chrome V8 引擎的 JavaScript 运行时。v16 是当时 LTS 主线,主要带来 V8 引擎性能提升、更稳定的 timers 与 npm 集成。
- [npmjs]6.14.15 →8.5.0:JavaScript 包管理器。8.x 系列引入了
npm install默认的锁文件行为变化、--omit依赖裁剪语法等新特性。
配套的包索引文档 changelogs/WinPythonPyPy-64bit-3.8.12.2.md 还列出了Pandoc 2.3(通用文档转换器)作为第三个工具,它在本次变更中版本未动,因此 History 文档中没有出现。
这些工具随发行版而非 Python 包分发,说明 WinPython 不仅仅打包 Python 库,还面向"开箱即用的科学计算 + 文档写作"场景整合了运行时依赖,例如 JupyterLab 前端构建与 notebook 导出 PDF 都依赖 Nodejs/Pandoc。
四、新增 Python 包全清单与重点解读
本次共新增 46 个包,下面按技术领域分组呈现完整清单:
异步与并发生态
| 包 | 版本 | 说明 |
|---|---|---|
| aiosignal | 1.2.0 | 注册异步回调的列表 |
| frozenlist | 1.3.0 | 实现collections.abc.MutableSequence的列表结构 |
| websockets | 10.3 | WebSocket 协议实现(RFC 6455 & 7692) |
| watchgod | 0.8.2 | 现代、简单的文件监听与代码热重载 |
| httptools | 0.4.0 | 与框架无关的 HTTP 协议工具集 |
这批包补齐了 PyPy 发行版的 asyncio 拼图:websockets是 Jupyter 服务器、Dask 分布式调度等场景的底层依赖,frozenlist/aiosignal则是 aiohttp 3.8 的核心依赖(本次 aiohttp 同时升级到 3.8.1)。
Qt / GUI 与科学绘图
| 包 | 版本 | 说明 |
|---|---|---|
| pyside6 | 6.3.0 | Qt 跨平台应用与 UI 框架的 Python 绑定 |
| pyside6_essentials | 6.3.0 | PySide6 核心模块子集 |
| pyside6_addons | 6.3.0 | PySide6 附加模块子集 |
| shiboken6 | 6.3.0 | Python/C++ 绑定辅助模块(PySide6 的生成器依赖) |
| pyqtgraph | 0.12.4 | 面向科学计算的图形与 GUI 库 |
| pythonqwt | 0.10.1 | 基于 Qt 的绘图控件 |
| guidata | 2.1.1 | 为数据集编辑与展示自动生成图形界面的库 |
| formlayout | 1.2.1a1 | 用 Python 创建 Qt 表单对话框与控件的最简方式 |
| qtawesome | 1.1.1 | 在 PyQt/PySide 应用中使用 FontAwesome 图标 |
| qstylizer | 0.2.1 | 为 PyQt4/5、PySide1/2 生成样式表 |
| vitables | 3.0.2 | PyTables 数据文件的图形查看器 |
值得注意:本次一次性引入PySide6 6.3.0 全家桶(含shiboken6与 essentials/addons 拆分),加上pyqtgraph、pythonqwt、guidata、formlayout、qtawesome等,使 PyPy 发行版在 Qt6 时代的 GUI 科学计算能力得到系统化补强。vitables则补上了 HDF5 数据浏览的图形工具。
科学计算与数据工程
| 包 | 版本 | 说明 |
|---|---|---|
| opencv_python | 4.5.5+mkl | OpenCV Python 绑定(MKL 加速版) |
| pygad | 2.16.3 | 遗传算法库,支持 Keras 与 PyTorch 训练 |
| swifter | 1.0.9 | 以最快方式将任意函数应用于 pandas DataFrame/Series |
| dill | 0.3.3 | 序列化"几乎一切"的 Python 对象 |
| pycosat | 0.6.3 | picosat(SAT 求解器)的 Python 绑定 |
Jupyter 生态补全
| 包 | 版本 | 说明 |
|---|---|---|
| jupyter_packaging | 0.12.0 | Jupyter 打包工具 |
| notebook_shim | 0.1.0 | notebook traits 与配置的兼容层 |
| papermill | 2.3.4 | 参数化并运行 Jupyter / nteract Notebook |
Web / API 与开发工具
| 包 | 版本 | 说明 |
|---|---|---|
| alembic | 1.7.7 | SQLAlchemy 的数据库迁移工具 |
| mako | 1.2.0 | 高性能模板语言 |
| commonmark | 0.9.1 | CommonMark Markdown 规范的 Python 解析器 |
| rich | 12.3.0 | 在终端渲染富文本、表格、进度条与 Markdown |
| fastjsonschema | 2.15.3 | 高速 JSON Schema 校验实现 |
| mypy | 0.942 | 可选静态类型检查 |
| mypy_extensions | 0.4.3 | mypy 的实验性类型系统扩展 |
| black | 22.3.0 | 不妥协的代码格式化工具 |
| python_lsp_jsonrpc | 1.0.0 | JSON-RPC 2.0 服务器库 |
| python_lsp_server | 1.4.1 | 面向 LSP 协议的 Python 语言服务器 |
| pyzo | 4.12.3 | 面向科学计算的 Python IDE |
| xlwings | 0.24.7 | 在 Python 与 Excel 之间双向交互 |
| langcodes | 3.3.0 | 用 IETF 语言标签标注人类语言 |
| jellyfish | 0.8.9 | 字符串近似与语音匹配 |
| astor | 0.8.1 | 读取/重写/写出 Python AST |
| tzdata | 2022.1 | IANA 时区数据提供者 |
| backports.zoneinfo | 0.2.1 | 标准库zoneinfo模块的回移植 |
| pytz_deprecation_shim | 0.1.0.post0 | 让pytz弃用更平滑的兼容层 |
.NET 集成(PyPy flavor 的独特亮点)
| 包 | 版本 | 说明 |
|---|---|---|
| pythonnet | 3.0.0a2 | .NET 与 Mono 的 Python 集成 |
| clr_loader | 0.1.7 | 加载 .NET 运行时的纯 Python 通用加载器 |
| clrmagic | 0.0.1a2 | 在 IPython 中使用 .NET 语言的 cell magic |
| pywin32 | 300+dummy | Python 的 Windows 扩展 |
pythonnet+clr_loader+clrmagic的组合使 PyPy 解释器可以调用 .NET 程序集,pywin32则提供了 Win32 API 访问能力——这是 Windows 平台发行版差异化的关键能力。
五、升级 Python 包全清单与重点解读
本次升级涉及约 150 个包,其中最重要的一条是Python 内核本身:Python3.7.12 → 3.8.12,这是本次发行版的语言版本跃迁,也解释了为何大量依赖 3.8 特性的包能够随之升级。其余升级包完整清单如下(按原文档顺序):
affine 2.3.1、aiofiles 0.8.0、aiohttp 3.8.1、altair 4.2.0、amply 0.1.5、aniso8601 9.0.1、anyio 3.5.0、arrow 1.2.2、asgiref 3.5.0、asteval 0.9.26、astroid 2.11.3、async_timeout 4.0.2、attrs 21.4.0、babel 2.10.1、base58 2.1.1、beautifulsoup4 4.11.1、bleach 5.0.0、blis 0.7.7、bokeh 2.4.2、bottleneck 1.3.4、bqplot 0.12.33、branca 0.5.0、cachelib 0.6.0、cachetools 5.0.0、cartopy 0.20.2、catalogue 2.0.7、cffi 1.15.0、cftime 1.6.0、charset_normalizer 2.0.12、click 8.0.4、colorcet 3.0.0、coverage 6.3.2、csvs_to_sqlite 1.3.1a0、cvxopt 1.3.0、cvxpy 1.2.0、cython 0.29.28、dash 2.3.0、dask 2022.4.2、dask_image 2021.12.0、databases 0.5.5、datasette 0.61.1、datasette_graphql 2.0.1、debugpy 1.6.0、distlib 0.3.4、distributed 2022.4.2、ecos 2.0.10、entrypoints 0.4、fastapi 0.75.2、fasteners 0.17.3、filelock 3.6.0、fiona 1.8.21、flask 2.1.2、flask_compress 1.12、flit 3.7.1、flit_core 3.7.1、fonttools 4.31.2、fs 2.4.15、fsspec 2022.3.0、gdal 3.4.2、geoviews 1.9.5、gitpython 3.1.26、graphene 3.0、graphql_core 3.1.7、graphql_relay 3.1.5、great_expectations 0.14.6、h5py 3.6.0、holoviews 1.14.8、httpcore 0.14.7、httpie 3.1.0、httpx 0.22.0、hypercorn 0.13.2、hypothesis 6.45.1、idlex 1.22、imageio 2.17.0、imagesize 1.3.0、imbalanced_learn 0.9.0、importlib_metadata 4.11.3、importlib_resources 5.7.1、intake 0.6.4、ipycanvas 0.11.0、ipykernel 6.13.0、ipympl 0.9.1、ipython 7.32.0、ipywidgets 7.7.0、isort 5.10.1、itsdangerous 2.1.2、janus 1.0.0、jedi 0.18.1、jinja2 3.0.3、jsonpointer 2.3、jsonschema 4.4.0、jupyter_client 7.3.0、jupyter_console 6.4.3、jupyter_core 4.10.0、jupyter_lsp 1.5.1、jupyter_server 1.17.0、jupyter_server_mathjax 0.2.5、jupyter_server_proxy 3.2.1、jupyterlab 3.3.4、jupyterlab_git 0.34.2、jupyterlab_lsp 3.10.1、jupyterlab_pygments 0.2.2、jupyterlab_server 2.13.0、jupyterlab_widgets 1.1.0、keyring 23.5.0、kiwisolver 1.4.2、lazy_object_proxy 1.7.1、locket 1.0.0、loky 3.1.0、lxml 4.8.0、lz4 4.0.0、markdown 3.3.6、markupsafe 2.1.1、matplotlib 3.5.1、maturin 0.12.14、metakernel 0.28.2、mizani 0.7.4、mpld3 0.5.7、msgpack 1.0.3、multidict 6.0.2、nbclassic 0.3.7、nbclient 0.6.0、nbconvert 6.5.0、nbformat 5.3.0、nest_asyncio 1.5.5、networkx 2.8、nltk 3.7、notebook 6.4.11、numexpr 2.8.1、numpy 1.22.3+mkl、numpydoc 1.2.1、oct2py 5.4.3、octave_kernel 0.34.1、osqp 0.6.2.post4、packaging 21.3、pandas 1.4.2、panel 0.13.0、param 1.12.1、parso 0.8.3、pg8000 1.23.0、pillow 9.1.0、pint 0.19.2、pip 22.0.4、pipdeptree 2.2.1、pkginfo 1.8.2、platformdirs 2.5.2、plotly 5.7.0、plotnine 0.8.1.dev0、portpicker 1.5.0、prettytable 3.2.0、prometheus_client 0.14.1、prompt_toolkit 3.0.29、psutil 5.9.0、py 1.11.0、pybind11 2.9.2、pycparser 2.21、pydantic 1.9.0、pygame 2.1.2、pygments 2.11.2、pylint 2.13.7、pymongo 4.1.1、pyopengl 3.1.6、pyproj 3.3.1、pyshp 2.2.0、pytest 7.1.1、python_dotenv 0.19.2、python_slugify 6.1.2、python_snappy 0.6.1、pytz 2022.1、pyviz_comms 2.2.0、pywavelets 1.3.0、pywinpty 2.0.5、pyyaml 5.4.1、pyzstd 0.15.2、qdarkstyle 3.0.3、qdldl 0.1.5.post2、qtconsole 5.3.0、qtpy 2.1.0、quart 0.17.0、readme_renderer 35.0、redis 4.2.2、regex 2022.3.15、reportlab 3.6.9、requests 2.27.1、rope 1.0.0、rtree 1.0.0、rx 3.1.1、scikit_image 0.19.2、scipy 1.8.0、scs 3.2.0、setuptools 62.1.0、shapely 1.8.1.post1、simplejson 3.17.6、sklearn_contrib_lightning 0.6.2.post0、slicerator 1.1.0、snowballstemmer 2.2.0、sounddevice 0.4.4、soupsieve 2.3.2.post1、sphinx 4.5.0、sqlalchemy 1.4.35、sqlite_bro 0.12.2、sqlite_utils 3.26、starlette 0.17.1、statsmodels 0.13.2、sympy 1.10.1、tables 3.7.0、terminado 0.13.3、testpath 0.6.0、threadpoolctl 3.1.0、tifffile 2022.4.22、tinycss2 1.1.1、tomli 2.0.1、tomli_w 1.0.0、tomlkit 0.10.2、toolz 0.11.2、tqdm 4.64.0、trio 0.20.0、twine 4.0.0、typer 0.4.1、typing_extensions 4.2.0、tzlocal 4.2、ujson 5.2.0、urllib3 1.26.9、uvicorn 0.17.6、vega 3.6.0、virtualenv 20.14.1、wasabi 0.9.1、wasmer 1.1.0、wasmer_compiler_cranelift 1.1.0、wasmer_compiler_singlepass 1.1.0、watchdog 2.1.7、websocket_client 1.3.2、werkzeug 2.1.2、wheel 0.37.1、widgetsnbextension 3.6.0、winpython 4.6.20220501、wrapt 1.14.0、wsproto 1.1.0、xarray 2022.3.0、xlsxwriter 3.0.3、yapf 0.32.0、zarr 2.11.3、zict 2.2.0、zipp 3.8.0
重点升级解读
科学计算基石全面换代:numpy从 1.21.4+mkl 升到1.22.3+mkl(MKL 加速),scipy升到1.8.0,pandas升到1.4.2,matplotlib从开发版3.5.0.dev2464+g95463c32e6收敛到正式版3.5.1。h5py 3.6.0、numexpr 2.8.1、bottleneck 1.3.4、statsmodels 0.13.2、xarray 2022.3.0同步跟进。这套组合决定了该发行版面向数值计算与数据分析的核心能力版本。
Jupyter 全线升级:jupyterlab 3.2.2 → 3.3.4、jupyter_server 1.11.2 → 1.17.0、jupyter_client 6.2.0 → 7.3.0、ipykernel 6.5.0 → 6.13.0、ipython 7.29.0 → 7.32.0、notebook 6.4.5 → 6.4.11、nbconvert 6.2.0 → 6.5.0,配套的nbclassic、nbclient、nbformat、qtconsole、terminado、widgetsnbextension、jupyterlab_lsp、jupyterlab_git等均同步升级,是一次完整的 Jupyter 技术栈刷新。
异步与 Web 框架换代:aiohttp 3.7.4.post0 → 3.8.1、fastapi 0.70.0 → 0.75.2、flask 2.0.2 → 2.1.2、httpx 0.20.0 → 0.22.0、uvicorn 0.15.0 → 0.17.6、starlette 0.16.0 → 0.17.1、quart 0.15.1 → 0.17.0、hypercorn 0.11.2 → 0.13.2、dash 2.0.0 → 2.3.0、dask 2021.11.0 → 2022.4.2(含distributed),Web 服务与并行计算场景的能力显著增强。
GIS 与可视化生态:gdal 3.3.3 → 3.4.2、cartopy 0.20.2、fiona 1.8.21、pyproj 3.3.1、shapely 1.8.1.post1、rtree 1.0.0、geoviews 1.9.5、holoviews 1.14.8、bokeh 2.4.2、plotly 5.7.0、altair 4.2.0、panel 0.13.0全线推进。
数据库与存储:sqlalchemy 1.4.35、redis 4.2.2、pymongo 4.1.1、pg8000 1.23.0、datasette 0.61.1、sqlite_utils 3.26、tables 3.7.0、zarr 2.11.3、h5py 3.6.0。
WinPython 工具自身:winpython 4.6.20211106 → 4.6.20220501,即发行版内置的 WinPython 发行工具集(含 WPPM 包管理器)也同步升级。
值得留意的特殊条目:pyyaml记录为 6.0 → 5.4.1,从版本号看是一次"回退"。可以推断这很可能与 PyPy 平台上可用 wheel 的兼容性约束有关——PyPy 无法直接使用 CPython 编译的扩展 wheel,只能依赖 PyPy 兼容的预编译包或纯 Python 实现,因此个别包在版本选择上会受到可用构件(artifact)的制约。matplotlib从带 git 提交号的开发版本升级为正式发布版,也说明该发行版在 3.7 时代曾依赖较激进的开发版构件。
六、移除 Python 包全清单与解读
本次移除 28 个包,完整清单如下:
argcomplete 1.12.3、astroml 1.0.1、astropy 4.3.1、backports.entry_points_selectable 1.1.0、cached_property 1.5.2、cramjam 2.4.0、cryptography 3.4.8、cymem 2.0.6、cytoolz 0.11.0、dask_labextension 5.1.0、flask_cors 3.0.10、ibis_framework 2.0.0、llvmlite 0.36.0、murmurhash 1.0.6、nlopt 2.7.0、parsy 1.3.0、preshed 3.0.6、promise 2.3、pyerfa 2.0.0、setuptools_scm 6.3.2、spacy 3.1.3、spacy_legacy 3.0.8、srsly 2.4.2、thinc 8.0.12、thrift 0.15.0、tranquilizer 0.5.1a1、voila 0.2.16、voila_gridstack 0.2.0
移除包的规律
- NLP 全家桶退场:
spacy、spacy_legacy及其依赖链thinc、cymem、preshed、murmurhash、srsly、blis依赖(blis 已升级保留)、catalogue被成组移除。spaCy 的核心扩展均为 Cython 编译且对 PyPy 支持有限,可以推断这是 PyPy flavor 无法获得兼容构件后作出的取舍。 - 科学计算收缩:
astropy(含pyerfa、astroml)、llvmlite(Numba 依赖,PyPy 无可用构建)、nlopt被移除,与"PyPy 平台可用预编译包有限"的现实一致。 - Jupyter 周边精简:
voila与voila_gridstack(notebook 只读服务)、dask_labextension(旧版 Dask 集群扩展,Dask 主包升级后以 JupyterLab 原生扩展替代)、tranquilizer(将函数暴露为 REST 的实验工具)被移除。 - 工具性/兼容层清理:
cramjam、cytoolz(由 toolz 纯 Python 版承担)、cached_property(3.8 标准库已内置functools.cached_property)、backports.entry_points_selectable(由新版importlib_metadata内置)、setuptools_scm(构建期工具,无需随发行版分发)、thrift、promise、parsy等。
整体来看,移除逻辑遵循"PyPy 兼容性优先 + 避免与标准库/新版依赖重复"的原则,这也解释了为何移除清单与新增/升级清单在领域上高度互补。
七、机制探秘:_History.md伴生文档是如何生成的
这类 History 文档并非手写,而是由仓库中的 wppm/diff.py 自动对比两个版本包索引生成。核心流程如下:
1. 解析包索引
wppm/diff.py 中的Package与PackageIndex两个类负责解析索引文档。Package定义了两种行格式正则(SourceForge 风格name | version | description与 Google Code 风格),PackageIndex按### Tools、### Python packages、### WheelHouse packages三个小节分桶,并跳过Name | Version | Description表头、<details>等噪声行。
2. 三分类对比
compare_packages函数对两个索引做规范化(包名统一为小写下划线)后执行集合差运算,恰好生成文档中的三个区块:
- New packages:新索引中存在、旧索引中没有的包;
- Upgraded packages:两侧都存在但版本不同的包,输出格式为
包名 旧版本 → 新版本 (描述); - Removed packages:旧索引中存在、新索引中没有的包。
3. 版本对版本的历史对比
compare_package_indexes(version2, version1, ...)生成文档标题## History of changes for WinPython-{architecture}bit {version2 + flavor},并通过find_previous_version从changelogs目录中自动定位"紧邻的前一版本"——这正是本文档标题下"since version 3.7.12.0PyPy"的来源。write_changelog函数则把结果写入WinPython{flavor}-{architecture}bit-{version2}_History.md文件。
4. 构建管线中的调用点
在 winpython/build_winpython.py 的构建流程中,Step 7(generate changelog)会先调用wppm.Distribution().generate_package_index_markdown()生成当前版本的包索引.md,随后调用diff.compare_package_indexes对比该索引与 changelogs 目录中前一版本的索引,产出_History.md。注释中还解释了为何 History 文件"留在构建输出目录、不复制进 changelogs/":flavor 在发布周期之间来来去去,而用户大约一年才升级一次,紧邻版本间的历史对比对读者意义有限。
5. 测试对"History 语义"的固化
tests/test_changelog_files.py 的模块 docstring 明确指出:"A history compares a release against the one immediately before it, and that chain carries no meaning"——即新版构建流程有意不再自动产出 History 伴生文件(test_no_history_is_written_against_the_previous_release对此做了断言固化),鼓励用户用wppm -diff <a>.md <b>.md自行选择任意两个索引进行对比。仓库中现存的大量_History.md(包括本文主角)属于历史遗留产物,用于回溯过去各版本的生态变化轨迹。
八、用 wppm 自行对比任意版本
如果你想知道任意两个 WinPython 版本之间包生态的差异,可以直接使用仓库自带的 diff 工具,无需依赖 History 伴生文档:
# 对比两个索引文件的所有小节(Tools / Python packages / WheelHouse) wppm -diff changelogs/WinPythonPyPy-64bit-3.8.12.2.md changelogs/WinPythonPyPy-64bit-3.7.12.0.md # 等价于直接调用模块 python -m wppm.diff file1.md file2.md # 只对比指定小节 python -m wppm.diff file1.md file2.md --section python python # 对比多对小节 python -m wppm.diff file1.md file2.md --pairs python python tools tools对于按版本号对比,则使用:
# 对比版本 3.8.12.2 与 3.7.12.0(默认从 changelogs 目录读取) python -m wppm.diff 3.8.12.2 3.7.12.0 "" 64 # 将对比结果写入 History 文件 python -m wppm.diff --write-changelog 3.8.12.2 3.7.12.0 changelogs "" 64注意:Windows 控制台默认编码为 cp1252,而升级行中的箭头→无法用该编码输出,因此 wppm/diff.py 在入口处对sys.stdout做了reconfigure(encoding="utf-8", errors="replace")处理,在非 UTF-8 终端下运行时可留意这一点。
九、延伸阅读与对照材料
- 本版本的完整包索引(含 Tools 与全部 Python 包版本):changelogs/WinPythonPyPy-64bit-3.8.12.2.md
- 下一版本(3.8.12.3)的变更历史,可对照观察 PyPy 系列的演进连续性:changelogs/WinPythonPyPy-64bit-3.8.12.3_History.md
- 变更历史的生成实现:wppm/diff.py
- 构建流程中 changelog 与 History 的生成步骤:winpython/build_winpython.py
- 关于 History 伴生文件语义的测试与说明:tests/test_changelog_files.py
- 构建矩阵与 flavor 机制:winpython_builds.toml
结语
WinPython PyPy 3.8.12.2 是一次承上启下的大版本更新:Python 语言内核从 3.7 跃迁到 3.8,46 个新包补齐了异步、Qt6 GUI、.NET 集成与科学计算拼图,约 150 个包完成升级,28 个因 PyPy 兼容性、标准库内置或功能替代而移除。通过结合 wppm/diff.py 的源码可以看到,这类变更历史并非零散笔记,而是由"包索引解析 → 三分类集合对比 → 版本定位"组成的自动化流水线产物。对于仍在维护或阅读历史 PyPy 发行版的用户,理解这套机制后,即可用wppm -diff自主完成任意版本间的生态对比,不再依赖人工整理的 History 文档。
- 开发工具
- 构建工具
- CLI
- 包管理器
【免费下载链接】winpython
A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.
相关推荐
Vue Flow 插槽(Slots)定制指南:默认插槽、连接线与 Zoom Pane 详解
Vue Flow 插槽(Slots)定制指南:默认插槽、连接线与 Zoom Pane 详解 Vue Flow(Vue 3 流程图组件库)通过一套精密的插槽(Sl
开发工具构建工具CLI包管理器X-TRACK 中的 LVGL 睡眠管理(Sleep Management)移植指南:基于 `lv_disp_get_inactive_time()` 的低功耗实现
X TRACK 中的 LVGL 睡眠管理(Sleep Management)移植指南:基于 lv_disp_get_inactive_time 的低功耗实现 导
开发工具构建工具CLI包管理器给终端装上 10000+ 图标:Nerd Fonts 图标字体上手实录
给终端装上 10000+ 图标:Nerd Fonts 图标字体上手实录 终端状态栏想加个分支符号,项目文件旁边想放个小图标,却发现默认字体里根本没有这些字符。N
开发工具构建工具CLI包管理器
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考