- 开发工具
- 构建工具
- CLI
- 包管理器
【免费下载链接】winpython
A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.
导读:本文以仓库中 changelogs/WinPythondot-32bit-3.12.3.0.md 发布的 WinPython 32 位
dot风味发行版软件包清单为主体,逐项解读其内置的 Python 运行时与构建/打包工具链,并结合仓库的winpython_builds.toml风味配置与build_winpython_meta.py构建脚本,说明这份 changelog 是如何由构建流程自动生成的。读完本文,你将掌握 WinPythondot风味的定位、它内置的每个包的用途与版本关系,以及如何从源码复现同样的构建并重新生成等价清单。
发行版概览:WinPython-32bit v3.12.3.0dot
WinPython 3.12.3.0dot是 WinPython 面向 Windows 平台的一个 32 位发行版,其版本号遵循 WinPython 自有的"Python 主版本 + 发行序号 + 风味名"复合命名规则:3.12.3.0表示基于 CPython 3.12.3,构建序号为0(即该 Python 版本下的首个构建),末尾的dot则是本次构建采用的**风味(flavor)**标识。
"dot" 风味对应仓库 winpython_builds.toml 中的[flavors.dot]配置块,其特征是一份极简、面向构建与打包场景的软件包集合:
[flavors.dot] requirements = "dot_requirements.txt" source_dirs = "packages.win-amd64" toolsdirs = "bdTools\\Tools.dot"requirements:该风味安装的 Python 包清单文件,即 dot_requirements.txt;source_dirs:指向本地 wheel 源目录packages.win-amd64;toolsdirs:发行版附带的外部工具目录bdTools\Tools.dot。
从文件命名(WinPython-32bit v3.12.3.0dot)可以看到,WinPython 将"位宽(32/64)"、"Python 版本号"与"风味名"三要素直接编码在发行版名称中,便于用户在多个版本之间精确识别与切换。
核心 Python 运行时
Python 3.12.3(含标准库)
清单的第一项也是整个发行版的地基:Python3.12.3,即 Python 编程语言及其标准库。这是 WinPython 发行版与"裸 Python 安装包"的本质区别所在:WinPython 在官方 CPython 运行时之上,通过构建工具链将一批精选的第三方包预装进发行目录,并配以便携式启动器与 WPPM 包管理器,开箱即可使用。
32 位(32bit)标识说明该发行版面向 x86 架构,适用于需要在 32 位进程中运行的场景(例如加载某些仅有 32 位二进制轮子的历史扩展库)。
便携式运行时补丁:msvc_runtime
msvc_runtime14.38.33135负责将 Microsoft Visual C++ 运行时 DLL 安装到发行版的sys.prefix与Scripts目录中。在 Windows 上,大量编译型 Python 扩展(C 扩展)依赖 MSVC 运行库,WinPython 将其预置进发行目录,使得整个发行版可以脱离系统级 VC++ Redistributable 独立运行——这正是 WinPython "便携式"属性的关键支撑之一。其版本号14.38.33135对应 Visual Studio 2022 时代的 VC 14.38 工具集。
构建与打包工具链
dot风味虽然包数量极少,却构成了一条完整的"Python 包构建流水线",覆盖了从源码构建、打包格式到安装前端的全部环节:
| 包名 | 版本 | 在构建流水线中的角色 |
|---|---|---|
| build | 1.1.1 | PEP 517 构建前端:调用pyproject.toml中的构建后端,产出 wheel/sdist |
| pyproject_hooks | 1.0.0 | 以编程方式调用pyproject.toml构建后端钩子的包装层,是build的底层依赖 |
| setuptools | 69.2.0 | 经典的构建/安装后端,支持下载、构建、安装、升级与卸载包 |
| wheel | 0.43.0 | wheel(.whl)二进制打包格式的参考实现与规范工具 |
| pip | 24.0 | PyPA 官方推荐的包安装工具,负责依赖解析与安装 |
| packaging | 23.2 | Python 包的版本号、依赖标记、发行版元数据解析等核心工具库,为pip/build等上层提供支撑 |
其中 build 所对应的pyproject_hooks1.0.0 与packaging23.2 构成典型的"前端-后端"协作关系:build通过pyproject_hooks调用后端(如setuptools),packaging则负责解析版本约束与依赖标记。这一组包在仓库中同样被用于构建 WinPython 自身的工具链——例如wppm包就是通过python -m flit build这类 PEP 517 流程产出的(见 README.rst)。
辅助工具与 WinPython 自身组件
sqlite_bro
sqlite_bro0.12.2是一个"单 Python 文件实现的图形化 SQLite 客户端",用于可视化地浏览与编辑 SQLite 数据库文件。它被列入dot风味,表明该发行版面向轻量数据处理与数据库调试场景提供了图形化入口。
colorama
colorama0.4.6提供跨平台的终端彩色输出支持。在 Windows 上,原生控制台对 ANSI 转义序列的支持有限,colorama通过包装标准输出/错误流,使命令行工具(包括构建脚本中的日志输出)能够可靠地显示颜色。
winpython(WinPython 发行工具,含 WPPM)
清单中最后一项是 winpython7.5.20240410,即 WinPython 发行版自身的工具集,内含WPPM(WinPython Package Manager)。根据 README.rst 的说明,WPPM 承担三类职责:
- 浏览发行版内置的软件包目录;
- 从发行版自带的 Wheelhouse(本地 wheel 仓库)安装包;
- 将 WinPython 注册到系统(Register WinPython)。
同时 README.rst 明确:日常增删包推荐使用pip,WPPM 是与之互补的管理工具。
软件包清单是如何生成的:构建工具链原理
这份 changelog 并非手工撰写,而是 WinPython 构建流程的自动化产物。在 winpython/build_winpython.py 的"Step 7: generate changelog"中,构建脚本会设置WINPYVER2、WINPYFLAVOR、WINPYVER环境变量后调用:
from wppm import wppm result = wppm.Distribution().generate_package_index_markdown()生成的文件名与本文所读文档完全对应:
mdn = f"WinPython{args.flavor}-{args.arch}bit-{changelog_version}.md" # 例如 flavor="dot"、arch=32、changelog_version="3.12.3.0" # => WinPythondot-32bit-3.12.3.0.md生成结果一方面留在构建目录,另一方面被复制到仓库的 changelogs 目录归档(shutil.copyfile)。由此可见,本文解析的清单就是dot风味构建完成后,由wppm.Distribution()依据实际安装结果反推出的包索引。
构建编排:winpython_builds.toml + build_winpython_meta.py
从零构建整个发行版的入口是 generate_a_winpython_distropy_meta.bat(调用build_winpython_meta.py),其命令行用法在 winpython_builds.toml 头部有明确示例:
generate_a_winpython_distropy_meta.bat winpython_builds.toml 315:slim generate_a_winpython_distropy_meta.bat winpython_builds.toml 315 generate_a_winpython_distropy_meta.bat winpython_builds.toml ... --dry-run # 仅打印构建命令而不实际执行build_winpython_meta.py 中的expand_builds()会把[pythons."3XX"]下的每个builds风味与 winpython_builds.toml 的[defaults](root_dir_for_builds、find_links、arch、create_installer等)合并成具体构建任务;若某个 Python 版本对某风味有特殊要求,可用[pythons."3XX".overrides.<flavor>]局部覆盖。随后run_build()(见 build_winpython_meta.py)把上述配置组装为一条python -m winpython.build_winpython命令,关键参数包括:
--python-target/--release/--release-level:决定目标 Python 版本与发布级别;--flavor:风味名(本文即dot);--mandatory-req:必装清单,默认取仓库根目录的 mandatory_requirements.txt(含pip、setuptools、wppm);--requirements:风味包清单,即 dot_requirements.txt;--constraints:版本约束文件,默认取 constraints.txt(内含大量包名>=版本约束);--find-links:本地 wheel 源目录;--bytecode:字节码预编译模式(pip/none/parallel-N);--only-binary:是否仅接受 wheel 二进制包;--create-installer:安装器类型(默认"None",仅产出目录,可配置为 7-Zip 等)。
其中dot风味的包清单由 dot_requirements.txt 定义,内容与 changelog 中的 Python 包列表一一对应:
# the essential sqlite_bro setuptools wheel build ##msvc_runtime # end of requirements.txt注意该文件中msvc_runtime以##注释形式出现,而 changelog 里实际安装了它——这说明清单的最终构成还会受 mandatory_requirements.txt(pip、setuptools、wppm)、constraints.txt 版本约束及pip依赖解析的共同影响,changelog 反映的是构建机上的最终解析结果,而非需求文件的简单罗列。
构建主流程与配套归档
winpython/build_winpython.py 展示了dot风味构建的完整流水线(与winpython_builds.toml注释中的--dry-run用法相呼应):
- Step 3:安装需求—— 先装
--mandatory-req(必装),再装--requirements(风味清单),并依据--bytecode/--only-binary拼接--force-reinstall、--no-compile、--only-binary=:all:等 pip 选项; - Step 4:Patch Winpython—— 调用
wppm.Distribution().patch_standard_packages('', to_movable=True)将标准包打为可移动(便携式)形态(见 winpython/build_winpython.py),随后按需字节码预编译; - Step 5-6:wheelhouse 需求与锁文件—— 通过
wppm.wheelhouse.pylock_to_req等接口生成带哈希的锁文件与 wheelhouse 需求(见 winpython/build_winpython.py),这也是仓库winpython/portable/下pylock.*.toml与requir.*.txt系列归档文件的来源; - Step 7:生成 changelog—— 即本文解析的包索引 Markdown 与配套
_History.md,其中_History.md由wppm.diff.compare_package_indexes(...)对比该风味上一次构建生成(见 winpython/build_winpython.py); - Step 8:创建安装器—— 按
--create-installer调用 7-Zip 打包(见 winpython/build_winpython.py)。
需要说明的是:本仓库(winpython)是 WinPython 的wppm包与构建工具链仓库,而非发行版二进制本身(见 README.rst);dot风味对应的历史锁文件归档位于 winpython/portable 下各cycle_*目录(例如pylock.64-3_13_7_0dot.toml),可用于复现对应版本的 wheel 集合。若要在本地复现dot风味的构建,可参考 winpython_builds.toml 中的命令模板,并准备满足 README.rst 要求的 Python 3.11+ 构建环境。
结语
WinPython 3.12.3.0 dot(32 位)以 CPython 3.12.3 为运行时,预置了从build/wheel/setuptools/pip到sqlite_bro、msvc_runtime与winpython(含 WPPM)的一整套构建与运维工具,是 WinPython 生态中面向"构建、打包、轻量数据操作"的极简风味。理解这份 changelog,本质上是理解 WinPython 构建工具链的数据流:winpython_builds.toml声明风味与版本 →build_winpython_meta.py展开为构建命令 →winpython.build_winpython执行安装、便携化、锁文件与索引生成 →wppm.Distribution().generate_package_index_markdown()最终产出本文所见的软件包清单。
- 开发工具
- 构建工具
- CLI
- 包管理器
【免费下载链接】winpython
A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.
相关推荐
WinPython dot 风味 32 位发行版解析:3.9.0.2dot 包清单与构建机制详解
WinPython dot 风味 32 位发行版解析:3.9.0.2dot 包清单与构建机制详解 导读 本文围绕 WinPython 仓库中的发行版包索引文档
开发工具构建工具CLI包管理器Gobot BLE 驱动包全解析:用 Go 驱动蓝牙低功耗设备(Battery / Device Info / Microbit / Sphero)
Gobot BLE 驱动包全解析:用 Go 驱动蓝牙低功耗设备(Battery / Device Info / Microbit / Sphero) 导读 dr
开发工具构建工具CLI包管理器WinPython 3.9.2.0dot(32 位)发行版解析:dot 风味构成、软件包清单与 changelog 生成机制
WinPython 3.9.2.0dot(32 位)发行版解析:dot 风味构成、软件包清单与 changelog 生成机制 本篇技术指南以 WinPython
开发工具构建工具CLI包管理器
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考