WinPython Zero 精简变体包清单与版本变更解析:以 WinPythonZero-64bit 3.6.2.0 为例 开发工具构建工具CLI包管理器【免费下载链接】winpythonA free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.项目地址https://gitcode.com/gh_mirrors/wi/winpython点击查看免费下载本文以仓库内 changelogs/WinPythonZero-64bit-3.6.2.0.md 及其配套变更记录 changelogs/WinPythonZero-64bit-3.6.2.0_History.md 为核心素材逐项解读 WinPython Zero 精简变体在 64 位 Windows 平台上随附的全部 Python 包以及它相对上一版本3.6.1.1Zero的完整变更明细。读者将了解到 Zero 变体与常规发行版的差异、每个内置包的作用定位并掌握这类包清单文档与变更历史文档在仓库中的自动化生成机制包索引生成、diff 对比、changelog 命名规范从而能够自行阅读和比对任何两个版本的 WinPython 发行清单。一、Zero 变体是什么零工具、纯 Python 核心的精简发行版WinPython 是一个面向 Windows 平台、内置预编译科学计算包的便携式 Python 发行版。为了满足不同使用场景发行版按 flavor口味/变体区分内置内容。Zero 系列文件名形如WinPythonZero-64bit-*.md是其中一种精简变体从 changelogs/WinPythonZero-64bit-3.6.2.0.md 的目录结构可以清楚看到该版本Tools工具章节为空表——没有 Node.js、Pandoc、VSCode 等开发工具只保留 Python 解释器本身与一批经过挑选的 Python 包。从源码视角看这与 wppm/utils.py 中get_installed_tools()的实现逻辑吻合该函数只扫描发行版根目录下的n/node.exe、t/pandoc.exe、t/VSCode/Code.exe等工具目录Zero 变体未携带这些目录因此工具清单为空。这种按 flavor 定制发行内容的设计在当今构建体系中依然延续当前 winpython_builds.toml 通过[flavors.xxx]块定义每种变体的requirements依赖清单、source_dirswheel 来源目录与toolsdirs工具目录例如slim、dot、dotf等Zero 则是 2017 年前后历史构建体系下的对应精简口味。可以说Zero 就是除了 Python 内核与包之外什么都不带的极简发行版。二、3.6.2.0Zero 完整包清单该文档记录的是 64 位、Python 3.6.2 内核的 Zero 发行版随附 Python 包。下表为原文档的完整清单共 23 项未做任何删减Python packagesNameVersionDescriptionPython3.6.2Python programming language with standard librarybrotli0.6.0Python binding of the Brotli compression librarycloudpickle0.3.1Extended pickling support for Python objectsdask0.15.1Minimal task scheduling abstractiondocopt0.6.2Pythonic argument parser, that will make you smilejedi0.10.2An autocompletion tool for Python that can be used for text editorsjoblib0.11Lightweight pipelining: using Python functions as pipeline jobs.locket0.2.0File-based locks for Python for Linux and Windowspartd0.3.8Appendable key-value storagepip9.0.1A tool for installing and managing Python packagesprompt_toolkit1.0.15Library for building powerful interactive command lines in Pythonptpython0.41Python REPL build on top of prompt_toolkitpygments2.2.0Generic syntax highlighter for general use in all kinds of softwarepyodbc4.0.17DB API Module for ODBCpyreadline2.0IPython needs this module to display color text in Windows command windowpython_snappy0.5.1Python library for the snappy compression library from Googlepythonnet2.4.0.dev0.Net and Mono integration for Pythonsetuptools36.2.7Download, build, install, upgrade, and uninstall Python packages - easilysix1.10.0Python 2 and 3 compatibility utilitiessqlite_bro0.8.11a graphic SQLite Client in 1 Python filetoolz0.8.2List processing tools and functional utilitieswcwidth0.1.7Measures number of Terminal column cells of wide-character codeswinpython1.9.20170812WinPython distribution tools, including WPPM (package manager)这批包大致可以划分为四个功能簇理解分组有助于判断 Zero 变体的定位Python 运行时与包管理基础Python 3.6.2、pip 9.0.1、setuptools 36.2.7以及发行版自身的winpython 1.9.20170812内含 WPPM 包管理器。pip与setuptools也是构建工具链中的强制性依赖——参见 mandatory_requirements.txtpip、setuptools、wppm三行。科学计算与任务调度dask 0.15.1并行任务调度抽象及其配套的toolz 0.8.2函数式工具、partd 0.3.8可追加键值存储、locket 0.2.0文件锁、cloudpickle 0.3.1增强 pickle支持序列化闭包与代码对象正是 dask 分布式执行所依赖的序列化能力、joblib 0.11轻量流水线。这一组是 Zero 变体中最接近科学计算内核的部分。交互式开发体验ptpython 0.41基于 prompt_toolkit 的增强 REPL、prompt_toolkit 1.0.15、jedi 0.10.2编辑器补全引擎、pygments 2.2.0语法高亮、pyreadline 2.0Windows 控制台彩色输出的 readline 兼容层、wcwidth 0.1.7终端宽字符宽度计算。数据访问与互操作pyodbc 4.0.17ODBC 数据库访问、sqlite_bro 0.8.11单文件 SQLite 图形客户端、python_snappy 0.5.1Google Snappy 压缩、brotli 0.6.0Brotli 压缩、pythonnet 2.4.0.dev0.NET/Mono 互操作、six 1.10.0Py2/Py3 兼容层、docopt 0.6.2命令行参数解析。三、相对 3.6.1.1Zero 的版本变更明细配套文档 changelogs/WinPythonZero-64bit-3.6.2.0_History.md 记录了自上一个 Zero 版本3.6.1.1Zero以来的全部包变动。完整继承如下新增包New packagesPackageVersionDescriptionpyreadline2.0IPython needs this module to display color text in Windows command window升级包Upgraded packagesPackage旧版本 → 新版本Descriptioncloudpickle0.2.2 → 0.3.1Extended pickling support for Python objectsdask0.14.3 → 0.15.1Minimal task scheduling abstractionprompt_toolkit1.0.14 → 1.0.15Library for building powerful interactive command lines in Pythonptpython0.39 → 0.41Python REPL build on top of prompt_toolkitpyodbc4.0.16 → 4.0.17DB API Module for ODBCPython3.6.1 → 3.6.2Python programming language with standard librarysetuptools35.0.2 → 36.2.7Download, build, install, upgrade, and uninstall Python packages - easilywinpython1.9.20170423 → 1.9.20170812WinPython distribution tools, including WPPM (package manager)移除包Removed packagesPackageVersionDescriptionappdirs1.4.3A small Python module for determining appropriate platform-specific dirs, e.g. a user data dir.packaging16.8Core utilities for Python packagespyparsing2.2.0A Python Parsing Module几点值得注意的解读内核升级Python 由 3.6.1 升至 3.6.2这是本次版本号从3.6.1.x变为3.6.2.x的直接原因发行版版本号的命名规律为Python 大版本.小版本.补丁 构建号 flavor 名这在 winpython/make.py 的winpython_version_name属性中有直接体现。新增 pyreadline 是对 Windows 交互体验的补强ptpython/IPython 类工具在 Windows 命令窗口显示彩色文本依赖该模块而本次同时升级了ptpython与prompt_toolkit三者构成一次REPL 体验的整体升级。移除的 appdirs / packaging / pyparsing从清单看这三者并非 Zero 变体核心功能所必需的顶层依赖packaging是setuptools等工具的底层依赖而非直接使用项可以推断这次瘦身属于依赖树精简——Zero 本就追求最小体积去除不再被直接使用的间接依赖符合其一贯定位。此为基于清单结构的合理推断并非仓库中的明文说明。四、这份包清单文档是如何生成的包索引生成机制WinPythonZero-64bit-3.6.2.0.md这类文件并非手写而是由构建工具链在发布时自动生成的包索引package index。其生成逻辑位于 wppm/wppm.py 的Distribution类generate_package_index_markdown()wppm/wppm.py是入口它调用get_package_index_data()收集三类数据distribution 身份信息发行版名、版本、Python 版本、架构位数、tools 清单由utils.get_installed_tools()扫描工具目录得到、Python packages 清单来自get_installed_packages()内部调用piptree.PipData执行pip list --full随后通过render_markdown_for_list()渲染出Name | Version | Description三列表格。文档标题## WinPython 3.6.2.0Zero中的版本串来自构建环境变量WINPYVER2与WINPYFLAVOR参见 winpython/build_winpython.py Step 7 中changelog_version f{winpyver2}{args.release_level}与文件名拼接逻辑。表格中每个包的摘要Description由 wppm/utils.py 的sum_up()统一截断到 144 字符以内并保留完整句末保证表格行宽可控。值得强调的是 Zero 一词的由来flavor直接拼接进版本名3.6.2.0Zero这一设计在 winpython/make.py 的_create_env_config()写入WINPYFLAVOR与winpython_version_name属性中均可找到对应实现。五、变更历史文档是如何生成的diff 对比机制WinPythonZero-64bit-3.6.2.0_History.md记录了相对上一版本的变动其生成逻辑位于 wppm/diff.pycompare_package_indexes(version2, version1, ...)wppm/diff.py是核心入口先由find_previous_version()从changelogs/目录中按文件名解析出版本号并找到比目标版本更早的最近版本再分别读取两份 Markdown 索引最后以## History of changes for WinPython-64bit ...为标题输出结果。具体的差异归类由compare_packages(old, new)wppm/diff.py完成对包名做-→_转小写归一化后依次输出New packages仅新清单存在、Upgraded packages两边都存在但版本不同按旧 → 新格式与Removed packages仅旧清单存在三个小节——这正是我们看到的文档结构。版本排序依赖 PEP 440changelog_versions()将文件名中的版本串交给packaging.version.parse解析从而正确处理b1、post1等发布级别例如 3.14.7.0 3.14.7.1b1 3.14.7.1。这部分行为由 tests/test_diff_versions.py 覆盖验证包括release level 可见且有序_History.md伴随文件永远不会成为对比基准不同 flavor 之间互不可见32/64 位各自成线等规则。在构建流水线中这一过程由 winpython/build_winpython.py 的 Step 7 自动完成生成索引 md 后随即调用wppm.diff.compare_package_indexes()写出_History.md供发布者在公开前人工审视变动源码注释明确说明该文件不随归档发布仅保留包索引本身。六、实操用 WPPM 自行对比任意两个版本的包清单理解了生成机制后你可以借助仓库中的 WPPM 工具对任意两份索引做自己的对比而不必局限于相邻版本。参见 README.rst 与 wppm/wppm.py 的 CLI 定义# 对比任意两份包索引文件模式方向无所谓无需相邻版本 wppm -diff WinPythonZero-64bit-3.6.1.1Zero.md WinPythonZero-64bit-3.6.2.0.md # 生成当前目标发行版的 Markdown 包索引 wppm -md # 列出已安装包可带正则过滤 wppm -ls dask其中-diff直接调用 wppm/diff.py 的compare_files()会依次对比### Tools、### Python packages、### WheelHouse packages三个章节输出与本文第三部分同构的新增/升级/移除清单。文件模式与版本模式的实现细节如 UTF-8 输出以保证→箭头不被替换、_History.md被排除等均有测试佐证于 tests/test_diff_versions.py 与 tests/test_changelog_files.py。七、小结WinPythonZero-64bit 3.6.2.0 是 2017 年前后 Zero 精简变体线上的一个典型版本以 Python 3.6.2 为内核内置 22 个精选 Python 包与 WinPython 发行工具合计 23 项不携带任何外部工具相对 3.6.1.1Zero 升级了 8 个包含 Python 内核、新增 pyreadline、移除 3 个非必需间接依赖。这份文档与其变更记录均由 wppm/wppm.py 与 wppm/diff.py 自动生成是理解 WinPython flavor 定制体系与包索引自动化流程的极佳样本读者可沿 changelogs/ 目录中同 flavor 的相邻版本文件或借助wppm -diff继续展开任意发行版之间的包差异分析。赞分享开发工具构建工具CLI包管理器【免费下载链接】winpythonA free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.项目地址https://gitcode.com/gh_mirrors/wi/winpython点击查看免费下载相关推荐WinPython Ps2 风味发行版解析以 WinPython-64bit 3.6.8.0Ps2 包清单与版本变迁为例WinPython Ps2 风味发行版解析以 WinPython 64bit 3.6.8.0Ps2 包清单与版本变迁为例 WinPython 是一个面向 Wi开发工具构建工具CLI包管理器WinPython Ps2 变体包清单全解析以 WinPython-32bit 3.7.4.0Ps2 为例读懂 WinPython 版本清单与变更史WinPython Ps2 变体包清单全解析以 WinPython 32bit 3.7.4.0Ps2 为例读懂 WinPython 版本清单与变更史 WinP开发工具构建工具CLI包管理器DDIA 第二版第 6 章深度解读复制Replication——单主、多主与无主复制的原理、取舍与工程实践DDIA 第二版第 6 章深度解读复制Replication——单主、多主与无主复制的原理、取舍与工程实践 本文基于《设计数据密集型应用》第二版DDIA开发工具构建工具CLI包管理器上一篇如何在SonarQube中快速部署阿里巴巴P3C编码规范插件下一篇tech-conferences-india揭秘从2016到2021印度科技会议的发展趋势创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考