YAOTU INSIGHTS

WinPython 3.14.5.0dot 发行版包索引解读:dot 精简发行版的构成、生成机制与实战使用

WinPython 3.14.5.0dot 发行版包索引解读:dot 精简发行版的构成、生成机制与实战使用
开发工具构建工具CLI包管理器【免费下载链接】winpythonA free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.项目地址https://gitcode.com/gh_mirrors/wi/winpython点击查看免费下载WinPython 3.14.5.0dot 是 WinPython 面向 Windows 平台的「dot」精简风味发行版除 Python 3.14.5 解释器本身外仅预装 pip、setuptools、build 等构建基础设施与 wppm 包管理器不附带任何 WheelHouse 扩展包。本文以仓库中的发行包索引 changelogs/WinPythondot-64bit-3.14.5.0.md 为骨架结合wppm与构建工具链源码逐项解析这张清单的每个条目的含义与生成机制说明 dot 与 slim、dotf 等其它 flavor 的关系并给出利用该索引进行发行版对比、离线装包与本地复现构建的完整实战方案。读完本文你将能够读懂任意一份 WinPython changelog 的包索引并掌握通过wppm与构建 TOML 配置操作或复现同类发行版的方法。一、文档定位这是一份构建产物而非手写说明changelogs/WinPythondot-64bit-3.14.5.0.md不是人工撰写的发布公告而是构建流水线在每次发行后自动生成的「包索引」package index。它的标题、三段式表格结构乃至「The following packages are included in …」这句引导语全部由wppm.Distribution.generate_package_index_markdown()输出见 wppm/wppm.py标题行## WinPython 3.14.5.0dot来自发行版身份信息distribution name version flavor引导语中的64bit来自实际检测的架构位数utils.get_python_infos通过sys.maxsize 2**32判定见 wppm/utils.py三个小节Tools、Python packages、WheelHouse packages由 render_markdown_for_list 统一渲染为Name | Version | Description表格。文件名的构成同样有规则WinPython{dot}-{64}bit-{3.14.5.0}.md即「WinPython flavor 位数 四段版本号」。wppm/diff.py中的changelog_versions()正是用正则WinPython{flavor}-{architecture}bit-(.)\.(?:txt|md)$解析这些文件名再交给 PEP 440 版本解析器排序见 wppm/diff.py因此带b1、rc1等 release level 的版本也能正确参与比较。二、核心内容3.14.5.0dot 究竟包含什么2.1 总览表该文档完整列出了这一发行版的所有内容总计 1 项工具、10 个 Python 包、0 个 WheelHouse 包Tools工具NameVersionDescriptionPython3.14.5Python programming language with standard libraryPython packages预装 Python 包NameVersionDescriptionbuild1.4.2A simple, correct Python build frontendcolorama0.4.6Cross-platform colored terminal text.packaging26.2Core utilities for Python packagespip26.1.1The PyPA recommended tool for installing Python packages.pyproject-hooks1.2.0Wrappers to call pyproject.toml-based build backend hooks.setuptools82.0.1Most extensible Python build backend with support for C/C extension modulessqlite-bro0.13.1a graphic SQLite Client in 1 Python filesv-ttk2.6.0A gorgeous theme for Tkinter, based on Windows 11s UIwheel0.46.3Command line tool for manipulating wheel fileswppm17.4.20260511WinPython Package ManagementWheelHouse packages离线轮子仓库NameVersionDescription空原文档中每个包名都链向对应 PyPI 项目页正文中的名称、版本与描述与原文档逐一对应未做删减。2.2 三个小节各代表什么Tools发行版根目录下随附的开发工具由utils.get_installed_tools()探测生成见 wppm/utils.py。它会依次检查python.exe、n/node.exeNodejs、t/pandoc.exePandoc、t/VSCode/Code.exe存在哪个就列出哪个。dot 版本只出现 Python 一项说明其未附带 Nodejs、Pandoc 与 VSCode——这正是 dot 的精简之处。Python packages发行版 site-packages 中已安装的包通过pip list --formatfreeze枚举并补上版本与摘要get_installed_packages()见 wppm/wppm.py。这 10 个包是构建与打包的最小闭环。WheelHouse packages发行版wheelhouse/included.wheels目录中预置的离线轮子由wh.list_packages_with_metadata()列出见 wppm/wppm.py。该表为空是 dot 的刻意设计dot 不预置任何扩展轮子用户需要的第三方包一律自行通过 pip 安装这也让发行包体积保持最小。2.3 这 10 个包在发行版里各司其职把预装包按功能归类可以看出 dot 的选包逻辑就是「能构建 Python 包 能管理环境」的最小集合安装/构建核心pip 26.1.1安装器、setuptools 82.0.1构建后端支持 C/C 扩展模块、wheel 0.46.3wheel 文件操作工具PEP 517 构建前端build 1.4.2python -m build前端pyproject-hooks 1.2.0调用 pyproject.toml 后端钩子的封装层二者配套完成标准化的源码包构建基础工具库packaging 26.2版本号、依赖规范的解析工具wppm/diff.py的 PEP 440 版本排序就依赖它终端与 GUI 增强colorama 0.4.6Windows 控制台 ANSI 彩色输出、sqlite-bro 0.13.1单文件实现的图形化 SQLite 客户端、sv-ttk 2.6.0基于 Windows 11 UI 的 Tkinter 主题环境管理wppm 17.4.20260511WinPython Package Manager仓库中wppm/__init__.py当前版本已演进至 17.13此处是随该发行版锁定的版本。三、dot 的选包规则从哪来构建 TOML 中的 flavor 定义「哪些包进发行版」由构建配置 winpython_builds.toml 决定。每个 flavor风味是一套独立的文件清单[flavors.dot]的定义如下winpython_builds.toml[flavors.dot] requirements dot_requirements.txt source_dirs packages.win-amd64 toolsdirs bdTools\\Tools.dotrequirements指向 dot_requirements.txt其内容即为# the essential sqlite_bro setuptools wheel build ##msvc_runtime与预装清单对照可见sqlite_bro、setuptools、wheel、build正来自这份文件##msvc_runtime是注释掉的 MSVC 运行库项。除此之外每个发行版还必须安装 mandatory_requirements.txt 中的强制项pip、setuptools、wppm。构建脚本会先装 Mandatory、再装 Main见 winpython/build_winpython.py 的双循环pip_install。pip、wppm由此进入每个 flavor而setuptools同时被两份文件引用二者取并集后即为最终的 10 个包另加colorama、packaging、pyproject-hooks、sv-ttk等 pip 拉入的依赖。source_dirs指向存放 Python 发行 zip 与轮子的packages.win-amd64目录toolsdirs指向 dot 专属的工具目录bdTools\Tools.dot——由于该目录不含 pandoc 等工具所以 Tools 表只有 Python 一项。wppm的-md参数可以在任意已安装的发行版上即时复现这张清单wppm -md输出的正是generate_package_index_markdown()的 Markdown 文本可作为校验当前环境内容的便捷手段。3.1 dot 在 flavor 家族中的位置同一个 Python 版本可以按不同 flavor 分别构建。当前 winpython_builds.toml 为 Python 3.14 配置了dot、dotf、slim、slimf四种构建flavorrequirementssource_dirstoolsdirs说明dotdot_requirements.txtpackages.win-amd64bdTools\Tools.dot最小精简版本文主题dotfdot_requirements.txtpackages.win-amd64tbdTools\Tools.dotdot 的自由线程free-threaded版本slimrequirements_slim.txtpackages.win-amd64bdTools\tools64_pandoc_alone含 pandoc 的标准精简版slimfrequirements_slimf.txtpackages.win-amd64tbdTools\tools64_pandoc_aloneslim 的自由线程版本此外还有未在 3.14 下启用的whlflavor纯轮子集见 winpython_builds.toml。发行周期文件 cycles/2026_03.toml 中的 flavor 矩阵进一步给出了各 flavor 的构建产物形态dot 为 64 位、不携带 PANDOC、产出 zip 与 exe 两种格式slim 则带 pandoc 并产出 7z 与 exe。tests/test_diff_versions.py中有专门用例保证dot与dotf互不串味flavor 不是彼此的字符串前缀确保各自版本线独立比较。四、这份索引是怎么生成的构建流水线中的第 7 步在 winpython/build_winpython.py 的构建流程中生成 changelog 是固定的 Step 7由WINPYVER2如3.14.5.0、WINPYFLAVORdot、WINPYVER3.14.5.0dot三个环境变量拼出版本标识调用wppm.Distribution().generate_package_index_markdown()生成 Markdown该函数内部按 Tools / Python packages / WheelHouse 三节收集数据见 wppm/wppm.py写入WinPythondot-64bit-3.14.5.0.md并复制到仓库changelogs/目录归档。完整流水线winpython/build_winpython.py依次为移除旧构建目录用make.py从 Python 发行 zip 解压出基础环境并复制 launchers 与工具目录、生成scripts/env.ini见 winpython/make.py依次 pip 安装 Mandatory 与 Main 两份 requirementsdot 采用--only-binary:all:仅二进制轮子缺轮子立即失败而不是在构建机上现场编译见 winpython/build_winpython.pypatch WinPython将各 Scripts 的 shebang 改写为相对路径保证发行版可移动patch_standard_packages(pip, to_movableTrue)见 wppm/wppm.py处理 WheelHouse requirementsdot 无此项直接跳过生成pylock.*.toml与带哈希的requir.*.txt锁定文件生成 changelog本文主题按需创建安装包dot 在周期配置中为 zip exe。五、用这份索引做版本对比wppm -diffchangelogs/目录按版本与 flavor 各存一份索引任意两份都可以用wppm -diff直接对比这正是索引文件的核心用途之一wppm -diff changelogs/WinPythondot-64bit-3.14.2.0.md changelogs/WinPythondot-64bit-3.14.5.0.md对比由 wppm/diff.py 实现按「新增 / 升级 / 移除」三类输出差异例如可将 3.14.2.0dot 与 3.14.5.0dot 两版索引对比直观看到pip25.3 → 26.1.1、setuptools80.9.0 → 82.0.1、build1.3.0 → 1.4.2、packaging25.0 → 26.2、wheel0.45.1 → 0.46.3、wppm17.2.20250823 → 17.4.20260511等条目随版本演进的变化。对比时需注意两个由测试用例钉死的约束见 tests/test_diff_versions.py对比基准只认同名 flavor、同架构的索引dot不会与slim或dotf相互比较跨 flavor 的差异被视为噪音_History.md伴生文件不是索引wppm/diff.py会将其解析失败并忽略tests/test_changelog_files.py也明确断言新版本有意不生成 History 伴生文件历史链对每年约升级一次的用户意义有限用户自行挑选两份索引对比更实用。六、从索引到安装基于 wheelhouse 的离线装包WheelHouse 表为空不代表 wheelhouse 机制缺席。每个 WinPython 发行版根目录下都有wheelhouse/included.wheels目录路径由 wppm/wppm.py 计算wppm安装包时默认追加--no-index --trusted-hostNone --find-links{wheelhouse}参数见 wppm/wppm.py即优先从本地轮子库离线安装不访问网络索引。相关操作# 从发行版的 wheelhouse 离线安装某个包 wppm --install some-package.whl # 依据 pylock 锁定文件从指定轮子源(-ws)下载到指定目录(-wd) wppm pylock.64-3_14_5_0dot.toml -ws C:\Winp\packages.srcreq -wd C:\Winp\wheelhouse\included.wheels # 查看目标发行版安装的包 wppm -ls pand如果希望向自己的 WheelHouse 中补充离线轮子构建流程 Step 6/Step 5 生成的pylock.*.toml就是标准入口——构建脚本用wppm pylock.toml -ws ... -wd ...把锁定文件解析成一组轮子下载到发行版 wheelhouse见 winpython/build_winpython.py。七、本地复现 dot 发行版仓库提供了从几乎零开始构建 WinPython 发行版的工具链。典型用法见 winpython_builds.toml 头部注释:: 只构建 3.14 的 dot 风味 generate_a_winpython_distropy_meta.bat winpython_builds.toml 314:dot :: 构建 3.14 的全部 flavor generate_a_winpython_distropy_meta.bat winpython_builds.toml 314 :: 先看将执行哪些构建命令而不真正执行 generate_a_winpython_distropy_meta.bat winpython_builds.toml 314:dot --dry-run该批处理委托给 build_winpython_meta.py它用tomllib读取 TOML把[defaults]、[flavors.dot]与[pythons.314]三处配置展开成具体的 (python, flavor) 构建对再拼装出完整的python -m winpython.build_winpython ...命令build_winpython_meta.py关键参数包括--python-target 314、--release、--release-levelPython 主版本与 WinPython 四段版本号来自[pythons.314]的python_target_release等字段--flavor dot、--source_dirs、--tools_dirsflavor 定义中解析出的路径--mandatory-req/--requirements/--constraints分别对应强制、主 requirements 与 constraints.txt后者以形式为数百个包约定最低版本--only-binary yes只装二进制轮子--only-binary:all:--bytecode pip|none|parallel|parallel-N控制字节码编译策略parallel会用不超过 4 个并行 worker 做一次compileall见 winpython/build_winpython.py。注意构建工具链要求 Python 3.11README.rstPython 发行 zip 的来源python-build-standalone tarball与四段版本号的对应关系在每个发行周期的 cycles/*.toml 中声明构建时需保证本机目录结构与 TOML 中的root_dir_for_builds、find_links等默认配置一致。八、小结WinPythondot-64bit-3.14.5.0.md一份文档浓缩了 WinPython 构建体系的三个侧面内容侧dot 是仅含 Python 3.14.5 与构建/管理最小工具集的精简 flavor零 WheelHouse 包机制侧索引由wppm在构建 Step 7 自动生成文件名承载 flavor 架构 PEP 440 版本号可被wppm -diff精确解析与对比使用侧基于 wheelhouse 的离线安装、wppm的清单/依赖/对比命令以及通过winpython_builds.toml generate_a_winpython_distropy_meta.bat的本地复现路径。读者如需进一步深入可从 wppm/wppm.py 的Distribution类、wppm/diff.py 的版本对比逻辑与 tests/test_diff_versions.py、tests/test_changelog_files.py 的测试用例入手验证本文所述全部行为。赞分享开发工具构建工具CLI包管理器【免费下载链接】winpythonA free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.项目地址https://gitcode.com/gh_mirrors/wi/winpython点击查看免费下载相关推荐M9A 命令行版 MaaPiCli 使用指南从 ADB 连接到任务编排的完整实操手册M9A 命令行版 MaaPiCli 使用指南从 ADB 连接到任务编排的完整实操手册 本篇指南围绕《重返未来1999》自动化助手 M9A 的命令行前端 Ma开发工具构建工具CLI包管理器wasm-bindgen 异步互操作指南JS Promise 与 Rust Future 的完整桥接方案wasm bindgen 异步互操作指南JS Promise 与 Rust Future 的完整桥接方案 在 WebAssembly 场景下几乎所有 Web开发工具构建工具CLI包管理器OpCore Simplify10分钟黑苹果EFI生成指南OpCore Simplify10分钟黑苹果EFI生成指南 你是不是也想在电脑上装 macOS却被写配置劝退设备ID逐个查、补丁一条条对错一步就白屏。这开发工具构建工具CLI包管理器上一篇NGINX Ingress Controller 实战用 ExternalAuth Policy 与 oauth2-proxy 实现 OAuth2 外部认证下一篇戴森球计划工厂蓝图库5000专业设计帮你轻松建造星际帝国创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考