首页 / 资讯中心 / 文章详情

WinPython dot 发行版深度解析:以 3.10.9.0dot(32bit)包清单为例,拆解 WinPython 轻量 flavor 的构成与生成机制

WinPython dot 发行版深度解析:以 3.10.9.0dot(32bit)包清单为例,拆解 WinPython 轻量 flavor 的构成与生成机制 ★ FEATURED ARTICLE
开发工具构建工具CLI包管理器【免费下载链接】winpythonA free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.项目地址https://gitcode.com/gh_mirrors/wi/winpython点击查看免费下载WinPython 是面向 Windows 平台的便携式 Python 发行版而dotWinPythondot是其众多 flavor风味/变体之一对应官方文档中所说的极简发行仅携带 Python 解释器、包管理基础工具和一个图形化 SQLite 客户端其余科学计算生态一概不预装。本文以 changelogs/WinPythondot-32bit-3.10.9.0.md 这份官方包清单为核心逐一解读清单中每个包的职责与版本选择逻辑并从 winpython_builds.toml、dot_requirements.txt 和 winpython/build_winpython.py 等源码出发还原这份清单是如何被构建工具链自动生成出来的。读完本文你将能看懂任意一份 WinPython changelog 包清单掌握 dot 与 slim 等其他 flavor 的区别并理解 WinPython 发行版配置驱动、自动成文的构建机制。一、先读懂文件名WinPythondot-32bit-3.10.9.0 是什么文件名本身就是 WinPython 发行版的命名规范可以拆解为四段组成值含义前缀WinPythondot发行版名称 flavor 名dot架构32bit目标架构为 32 位x86版本3.10.9.0WinPython 发行版本号Python 3.10.9 第 0 次 WinPython 打包后缀无3.10.9.0 为正式版beta 类版本会在末尾追加b1、b2等 release level同一 Python 3.10 系列在仓库中还对应着 [changelogs/WinPython-2.7.x 系列]历史 2.7 分支以及64bit同版本号发行版而dot这一 flavor 命名直接来源于构建配置中 winpython_builds.toml 的[flavors.dot]区块。构建工具链在生成 changelog 时文件名同样由程序自动拼装。在 winpython/build_winpython.py 中可以看到mdn fWinPython{args.flavor}-{args.arch}bit-{changelog_version}.md out fWinPython{args.flavor}-{args.arch}bit-{changelog_version}_History.md其中changelog_version f{winpyver2}{args.release_level}winpyver2由目录名解析而来z[:1]_z[1:3]_z[3:]_release再替换下划线为点号。因此只要看到WinPythonflavor-archbit-版本.md的命名就知道这是构建脚本在 Step 7生成 changelog阶段自动产出的。二、3.10.9.0dot 的完整包清单原文档核心内容原文档以 Markdown 表格形式列出该发行版包含的全部组件。以下是完整清单Tools 一节为空表示本发行版未捆绑任何独立工具集Tools工具集本版本Tools表为空——这是 dot flavor 的刻意设计[flavors.dot]的toolsdirs bdTools\\Tools.dot指向一个仅含最少工具的目录构建时零工具或仅含运行必需项与完整版 WinPython 携带 Spyder、Jupyter 等重量级 IDE/工具形成鲜明对比。Python packagesPython 包名称版本说明Python3.10.9Python 编程语言及其标准库msvc_runtime14.32.31326将 Microsoft Visual C 运行时 DLL 安装到 sys.prefix 与 Scripts 目录pip22.3.1PyPA 官方推荐的 Python 包安装工具setuptools65.5.0便捷地下载、构建、安装、升级和卸载 Python 包sqlite_bro0.12.2用单文件 Python 实现的图形化 SQLite 客户端wheel0.38.4Python 内置包built-package格式winpython5.3.20221231WinPython 发行版工具集包含 WPPM清单与构建配置的对应关系这份清单并非人工手写而是构建完成后由wppm自动生成的快照。对照 dot_requirements.txt 可以看到 flavor 的最小依赖集合# the essential sqlite_bro setuptools wheel build ##msvc_runtime # end of requirements.txt主依赖与清单高度吻合sqlite_bro、setuptools、wheel均在清单中buildPEP 517 构建后端前端被列为构建期依赖安装后不在最终清单中独立呈现或随依赖树被折叠msvc_runtime在 requirements 中被注释掉##msvc_runtime但最终清单中仍有 msvc_runtime 14.32.31326——这是因为 mandatory_requirements.txt固定必装集合与约束文件constraints.txt共同参与了安装且 msvc_runtime 是 WinPython 保证 Windows 可运行性的关键运行时被强制带上。而固定必装集合 mandatory_requirements.txt 只有三行# the mandatory pip setuptools #not Wheel wppm这解释了为什么pip、setuptools、wppmwinpython 包内含 WPPM是任何 flavor 都必然存在的三件套。三、清单中每个包的职责拆解结合源码1. Python 3.10.9 与 CPython 标准库Python 3.10.9是该发行版的核心运行时。WinPython 的便携性建立在winpython/make.py的WinPythonDistributionBuilder之上——构建时从--source_dirs指向的目录拷贝 Python 基础 zip/目录再在 winpython/build_winpython.py 的 Step 2run_make_py中装配出WPy32-31090这样的环境目录。清单中Python 3.10.9一行代表解释器本体与标准库无独立版本号之外的细分。2. msvc_runtime 14.32.31326Windows 运行时的地基msvc_runtime负责把 Microsoft Visual C 运行时 DLLmsvcp140.dll等安装进发行版的sys.prefix与Scripts目录是许多预编译扩展模块如 numpy、scipy 的旧版本在 Windows 上加载的前提。它被列入最终清单说明 3.10.9.0dot 的构建环境采用了 VS 2015-2022 工具链对应的 VC 14.32 运行时。该包的存在使得发行版脱离系统级 VC 依赖也能独立运行是便携性的重要一环。3. pip 22.3.1包管理的入口pip 22.3.1是 PyPI 官方推荐安装器。在 WinPython 中pip 不仅是用户装包的第一入口其内部行为还被 WPPM 定制过在 wppm/wppm.py 的patch_standard_packages()中对 pip 的_vendor/distlib/scripts.py打了可移动 shebang补丁使 pip 生成的启动器使用相对路径to_movableTrue从而保证整个发行目录可整体拷贝/移动而不失效——这正是便携 Python的关键实现。4. setuptools 65.5.0构建与安装基础设施setuptools 65.5.0提供经典setup.py项目的构建、安装能力是 pip 安装源码包时的重要后端。在 3.10.9.0dot 的约束文件中setuptools 也以下限形式受约束见 constraints.txt保证向后兼容。对极简发行而言保留 setuptools 意味着用户拿到发行版后仍可pip install各类源码包。5. sqlite_bro 0.12.2dot flavor 唯一的特色应用sqlite_bro是一个单文件 Python 图形化 SQLite 客户端也是 dot 发行版区别于纯 Python 的最小可验证功能点。从 dot_requirements.txt 可以看出它是 dot flavor 的主依赖中唯一一个面向用户的实用工具。它由维护者选中纳入用于给用户提供一个开箱即用的 SQLite 浏览/编辑入口同时避免引入 Qt、科学计算等重型依赖保持发行体积最小化。6. wheel 0.38.4内置包格式支持wheel 0.38.4提供 PEP 427 的 wheel 格式构建与安装支持。winpython 构建链在 Step 3 安装 requirements 时默认--only-binary:all:见 winpython/build_winpython.py 中--only-binary参数默认值yes即只装预编译 wheel缺失即报错因此 wheel 本身必须随发行版提供。7. winpython 5.3.20221231发行版工具包内含 WPPMwinpython包是 WinPython 发行版的自管理工具核心是 WPPMWinPython Package Manager。从 pyproject.toml 可以看到其包元数据requires-python 3.10唯一硬依赖为packaging并注册了控制台脚本wppm wppm.wppm:main。WPPM 的能力包括wppm -ls列出已装包、-lsa查看包详细信息wppm -i wheel/-u package从内置 Wheelhouse 安装/卸载wppm -md生成当前环境的 Markdown 包清单即本文所讨论的 changelog 正文wppm -diff index1 index2比较任意两份发行版索引见 wppm/diff.py 的compare_fileswppm --register/--unregister在 Windows 上注册/注销发行版文件关联、图标、上下文菜单、开始菜单PEP-514 vendor key。四、dot 在 WinPython flavor 体系中的定位WinPython 通过winpython_builds.toml用Python 版本flavor二元组声明所有发行版。[flavors]区块定义了各 flavor 的差异点flavorrequirements 文件source_dirstoolsdirs定位dotdot_requirements.txtpackages.win-amd64bdTools\Tools.dot极简仅 Python 基础工具 sqlite_brodotfdot_requirements.txtpackages.win-amd64tbdTools\Tools.dot极简 free-threaded无 GILPythonslimrequirements_slim.txtpackages.win-amd64bdTools\tools64_pandoc_alone精简覆盖常用科学计算包slimfrequirements_slimf.txtpackages.win-amd64tbdTools\tools64_pandoc_alone精简 free-threadedwhldot_requirements.txtpackages.win-amd64bdTools\Tools.dot预留当前未构建关键区别在 requirements 文件的规模requirements_slim.txt 首行注释即写明160 entries - 112 kept包含 dask、duckdb、fastapi、jupyter、numpy 系列等大量科学计算包而 dot_requirements.txt 只有寥寥数行the essential。二者在 constraints.txt 中共同受版本下限约束如sqlite_bro0.13.1、setuptools80.9.0等为较新构建的约束快照具体以对应发行版构建期的 constraints 为准。因此可以得出结论dot 是 WinPython 家族中面向自带依赖的极简基础环境的 flavor——适合想要纯净 Python 自带包管理、自行搭建环境的用户若需要开箱即用的科学计算应选择 slim 或完整版。五、从 3.10.8.0dot 到 3.10.9.0dot本次升级内容配套的 changelogs/WinPythondot-32bit-3.10.9.0_History.md 记录了相对上一版3.10.8.0dot的变更全部为升级包旧版本新版本pip22.322.3.1Python3.10.83.10.9wheel0.37.10.38.4winpython5.1.202210305.3.20221231要点解读Python 3.10.8 → 3.10.9属于 CPython 3.10 系列的 bugfix 维护升级3.10.x 内不引入破坏性变化pip 22.3 → 22.3.1为维护性小版本wheel 0.37.1 → 0.38.4跨了多个小版本带来构建后端改进winpython 5.1.20221030 → 5.3.20221231是 WinPython 工具集自身的版本号日期式版本同步了 WPPM 的新能力msvc_runtime、setuptools、sqlite_bro未变动说明其版本在 3.10.8.0dot 已稳定。这份 History 文件同样是构建链 Step 7 的产物构建脚本调用wppm diff.compare_package_indexes(...)wppm/diff.py对比当前构建与上一发行版的包索引自动产出Upgraded packages列表落盘为_History.md。六、这份清单是怎样生成的从 TOML 配置到 Markdown 索引理解 changelog 的来龙去脉需要串起整条构建链以下均为仓库内实际实现配置声明winpython_builds.toml 中[flavors.dot]声明 requirements 文件[pythons.310]历史版本中 3.10 对应区块的builds列表声明要构建哪些 flavor。构建命令模板见文件头注释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 调用 build_winpython_meta.py其expand_builds()将(python, flavor)展开为具体构建参数requirements、source_dirs、toolsdirs 均按bd目标基目录推导。装配发行版build_winpython_meta.py 的run_build()拼装python -m winpython.build_winpython命令传入--python-target、--flavor、--winpydirbase、--requirements、--constraints、--mandatory-req、--bytecode、--only-binary等参数。winpython/build_winpython.py 依次执行 7 个步骤清理旧目录 → 用 make.py 装配 Python → 安装 mandatory main requirements默认--only-binary:all:即仅用 wheel 安装→ 打 WinPython 补丁 → 按需字节码编译 → 安装 wheelhouse 依赖 → 生成 lockfile。生成清单Step 7构建脚本调用wppm.Distribution().generate_package_index_markdown()wppm/wppm.py 的generate_package_index_markdown其内部流程为get_package_index_data()通过pip list --full见piptree枚举当前环境已装包并读取WINPYVER2/WINPYFLAVOR环境变量拼出发行版标识render_markdown_for_list()将包名、版本、描述渲染成Name | Version | Description三列表格最终输出## WinPython 3.10.9.0dot标题 The following packages are included in ...引导句 Tools / Python packages / WheelHouse packages 三节即本文开头所见的文档本体。沉淀归档生成的.md与_History.md被拷贝到仓库 changelogs/ 目录与同一版本的其他 flavor 文件并存。读者可用wppm -diff changelogs/WinPythondot-32bit-3.10.9.0.md changelogs/WinPythondot-32bit-3.10.8.0.md自行复核升级内容。七、如何用好这份清单对普通用户这份清单的价值在于环境预期管理明确 3.10.9.0dot 开箱只有 7 个 Python 包 空 Tools无 numpy、无 Qt、无 Jupyter需要时自行pip install版本溯源包版本与 constraints.txt 下限对照可判断后续pip install --upgrade的允许空间迁移规划结合_History.md的升级表评估 3.10.8.0dot 用户升级后的影响面本次全部为兼容性维护升级风险低构建复现开发者可依 winpython_builds.toml dot_requirements.txt constraints.txt 在本地重放 dot flavor 构建产出同一份清单。对于想深入源码的读者建议按此路径阅读先看 wppm/wppm.py 的Distribution类清单生成核心再看 winpython/build_winpython.py 的main()构建与命名逻辑最后回到 winpython_builds.toml 理解配置如何驱动一切——三处结合即可完整还原从一份 TOML 配置到一份 changelog 清单的全过程。赞分享开发工具构建工具CLI包管理器【免费下载链接】winpythonA free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.项目地址https://gitcode.com/gh_mirrors/wi/winpython点击查看免费下载相关推荐create-t3-app 的 NextAuth.js 集成实战指南会话管理、tRPC 保护过程与 Discord OAuth 配置create t3 app 的 NextAuth.js 集成实战指南会话管理、tRPC 保护过程与 Discord OAuth 配置 导读 当你在 Next.开发工具构建工具CLI包管理器深度解析 WinPython Zero 精简发行版WinPython-32bit 3.6.8.0Zero 包清单与 Changelog 生成机制深度解析 WinPython Zero 精简发行版WinPython 32bit 3.6.8.0Zero 包清单与 Changelog 生成机制 导读 本文以开发工具构建工具CLI包管理器WinPython 3.9.0.1dot32 位包清单深度解析dot 轻量 flavor 的组成、生成机制与构建链路WinPython 3.9.0.1dot32 位包清单深度解析dot 轻量 flavor 的组成、生成机制与构建链路 WinPython 是一套面向 Wi开发工具构建工具CLI包管理器上一篇前端表单处理终极方案tcomb-form在React中的完美应用下一篇LLM模型ONNX格式转换全攻略从部署优化到推理加速的实践指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站