- 开发工具
- 构建工具
- CLI
- 包管理器
【免费下载链接】winpython
A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.
导读:本文以开源仓库 winpython 中 changelogs/WinPython-3.4.2.2.md 为绝对主体,完整还原 WinPython 3.4.2.2(2014-11 发布)这套面向 Windows 的 Python 3.4 科学计算发行版的内置工具与全部预装包清单,并结合同目录的版本变更记录(History)、发布校验文件和仓库中的 WPPM(WinPython Package Manager)工具链源码,讲清"这份清单是什么、从上一版变了什么、它是如何被生成和比对的"。读完你将对一个典型 WinPython 发行版的构成粒度、包选型逻辑与配套工具链形成完整认知。
一、发行版概览:WinPython 3.4.2.2 是什么
WinPython 是面向 Windows 平台的 Python 免费发行版,核心卖点是便携(portable)与开箱即用的科学计算环境。仓库 README 将其定位为"A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python",而本仓库(gh_mirrors/wi/winpython)承载的是 WPPM 包管理器与构建工具链本身,发行版的每一版内容物都沉淀在changelogs/目录的清单文档中。
changelogs/WinPython-3.4.2.2.md 即 WinPython v3.4.2.2 的官方包清单(package index),它回答三个问题:
- 该版本基于哪个 Python 解释器?——Python 3.4.2(含标准库);
- 捆绑了哪些外部工具?—— gettext、SciTE、MinGW32 三件套;
- 预装了多少 Python 包?—— 89 个第三方包,外加发行版自身的
winpython工具包(内含 WPPM)。
该清单并不区分 32/64 位,因为两套架构的发行版内容物一致;从 changelogs/md5_sha1.txt 可以看到,3.4.2.2 实际发布了winpython-64bit-3.4.2.2.exe与winpython-32bit-3.4.2.2.exe两个安装包(详见下文"发布校验"一节)。清单文档标题下的引导句"The following packages are included in WinPython v3.4.2.2",正是每个 WinPython 版本清单的标准模板。
二、内置工具(Tools):编辑器、编译器与国际化三件套
WinPython 发行版除了 Python 解释器本身,还会捆绑少量外部可执行工具,它们通常位于发行版根目录,直接由WinPython Command Prompt等入口调用。3.4.2.2 版本携带以下工具:
| 名称 | 版本 | 说明 |
|---|---|---|
| gettext | 0.14.4 | GNU gettext 的 Win32 移植版,GNU 翻译工具(为标准库模块 pygettext 提供支持) |
| SciTE | 3.3.7 | 基于 SCIntilla 的文本编辑器,多语言支持,轻量而强大 |
| MinGW32 | 4.8.1 | C/C++ 与 Fortran 编译器(32 位对应 www.mingw.org 的 MinGW;64 位场景对应 numpy 官方文档推荐的 MinGW 静态工具链方案) |
三者的分工很清晰:
- SciTE面向快速编辑场景:单文件、零配置、语法高亮,适合在便携环境里应急改脚本;
- gettext + pygettext面向国际化(i18n)开发:
pygettext是 Python 标准库模块,用于从源码提取待翻译字符串,gettext 则负责生成/管理.mo编译消息目录; - MinGW32面向需要本地编译的场景:当 PyPI 上没有预编译 wheel 时,可用它编译 C/C++/Fortran 扩展模块——这也是科学计算发行版保留编译器的最直接理由。
可以推断,这套工具组合是"便携发行版 + 科学计算"定位的产物:既要能跑,也要能编,还要能多语言化。事实上该工具组合在 3.4.x 系列中保持稳定——唯一变化是 MinGW32 在下一版 3.4.2.3 中升级到了 4.9.2(见 changelogs/WinPython-3.4.2.3.md)。
三、Python 包清单:89 个第三方包全景
这是 3.4.2.2 清单的主体部分,覆盖了 2014 年底 Python 3.4 科学计算生态的主流组件。以下按功能域分组完整罗列(名称、版本与说明均忠实于原清单文档)。
3.1 核心科学计算与数据分析
| 名称 | 版本 | 说明 |
|---|---|---|
| numpy-MKL | 1.9.1 | NumPy:面向数字、字符串、记录与对象的多维数组处理(SciPy 的核心模块);包名中的-MKL后缀表明该构建面向 Intel MKL 数学核心库,与官方 PyPI 通用构建相区别 |
| scipy | 0.14.0 | SciPy:科学计算库(高等数学、信号处理、优化、统计等) |
| pandas | 0.15.1 | 面向数据分析、时间序列与统计的强大数据结构 |
| matplotlib | 1.4.2 | 2D 绘图库(可嵌入 PyQt 构建的 GUI 中) |
| sympy | 0.7.5 | 符号数学库 |
| statsmodels | 0.6.0 | 供 SciPy 使用的统计计算与模型 |
| seaborn | 0.4.0 | 统计数据可视化 |
| ggplot | 0.6.5 | 面向 Python 的 ggplot |
| numexpr | 2.4 | 基于向量化虚拟机逐元素快速求值数组表达式 |
| numba | 0.15.1 | 使用 LLVM 编译 Python 代码 |
| llvmpy | 0.12.7 | LLVM 的 Python 绑定 |
| Cython | 0.21.1 | 一种让为 Python 编写 C 扩展像写 Python 一样容易的语言 |
| joblib | 0.8.3_r1 | 轻量级流水线:将 Python 函数用作流水线作业 |
| patsy | 0.3.0 | 用符号公式描述统计模型 |
| brewer2mpl | 1.4.1 | 将 colorbrewer2.org 色图接入 Python 与 matplotlib |
| husl | 4.0.0 | 人性化 HSL(色相-饱和度-明度)颜色空间 |
| mpld3 | 0.2 | Matplotlib 的 D3 查看器(把 matplotlib 图输出为交互式 D3 网页) |
3.2 机器学习、图像与计算机视觉
| 名称 | 版本 | 说明 |
|---|---|---|
| scikit-learn | 0.15.2 | 用于机器学习与数据挖掘的 Python 模块集 |
| scikit-image | 0.10.1 | 面向 SciPy 的图像处理工具箱 |
| mahotas | 1.2.3 | 计算机视觉库 |
| nltk | 3.0.0 | 自然语言处理工具包(NLTK) |
| cvxopt | 1.1.7 | 凸优化库 |
| lmfit | 0.8.0 | 带边界与约束的最小二乘拟合 |
3.3 数据存取、数据库与 HDF 生态
| 名称 | 版本 | 说明 |
|---|---|---|
| h5py | 2.3.1 | HDF5 文件的通用 Python 接口(与 PyTables 不同,h5py 直接访问完整 HDF5 C 库) |
| tables | 3.1.1 | 基于 HDF5 库、用于管理分层数据集(超大数据量)的包 |
| ViTables | 2.1 | 浏览与编辑 HDF5/PyTables 格式文件的图形工具 |
| pyhdf | 0.8.3 | HDF4 文件(第四版层次数据格式)的 Python 接口 |
| sqlite_bro | 0.8.7.4 | 单个 Python 文件实现的图形化 SQLite 客户端 |
| SQLAlchemy | 0.9.8 | SQL 工具包与对象关系映射器(ORM) |
| sqlparse | 0.1.13 | 非校验型 SQL 解析器 |
| baresql | 0.7.0 | 直接在 Python 数据上玩转 SQL |
| db.py | 0.3.1 | "一个不烂的 db 包" |
| mysql-connector-python | 1.2.3 | 纯 Python 编写的 MySQL 驱动 |
| pg8000 | 1.10.1 | PostgreSQL 接口库 |
| pyodbc | 3.0.7 | ODBC 的 DB API 模块 |
| prettytable | 0.7.2 | 以美观的 ASCII 表格形式展示表格数据的简单库 |
| xlrd | 0.9.3 | 从 Microsoft Excel 电子表格提取数据 |
| XlsxWriter | 0.6.2 | 创建 Excel XLSX 文件的 Python 模块 |
3.4 交互式环境与 IDE 支撑
| 名称 | 版本 | 说明 |
|---|---|---|
| ipython | 2.3.1 | 增强型 Python shell |
| ipython-sql | 0.3.4 | 增强型 Python shell(在 IPython 中直接写 SQL) |
| spyder | 2.3.1 | 科学 Python 开发环境:面向交互式计算与数据可视化的简单直观用户界面 |
| pyzmq | 14.4.1 | 基于 ZeroMQ 库的轻量超快消息传递(IPython Qt console 依赖) |
| tornado | 4.0.2 | 可扩展的非阻塞 Web 服务器与工具(IPython notebook 依赖) |
| pyreadline | 2.0 | IPython 在 Windows 命令行窗口中显示彩色文本所需的模块 |
| pywin32 | 219 | 面向 Windows 的 Python 库 |
3.5 GUI 与可视化框架
| 名称 | 版本 | 说明 |
|---|---|---|
| PyQt4 | 4.10.4 | Qt 跨平台 GUI 工具包的 Python 绑定 |
| PyQtdesignerplugins | 1.1 | 为 PyQt4 安装 Python Qt designer 插件(Matplotlib、guiqwt 等) |
| PyQwt | 5.2.1 | 2D 绘图库(Qwt 库的 Python 绑定,支持快速绘图) |
| guidata | 1.6.2 | 自动生成图形用户界面,轻松编辑与展示数据集 |
| guiqwt | 2.3.2 | 高效的曲线/图像绘图及其他科学数据处理软件开发的 GUI 工具 |
| formlayout | 1.0.15 | 无需编写任何 GUI 代码即可创建表单对话框/控件来编辑各类参数的模块 |
| PyOpenGL | 3.1.0 | OpenGL 及相关 API 的跨平台 Python 绑定 |
3.6 文档、文件、Web 与序列化
| 名称 | 版本 | 说明 |
|---|---|---|
| docutils | 0.12 | 将纯文本文档处理为 HTML 或 LaTeX 等有用格式的文本处理系统(含 reStructuredText) |
| Sphinx | 1.2.3 | 使用 reStructuredText 作为标记语言生成文档的工具 |
| Pygments | 1.6 | 通用语法高亮器,适用于各类软件 |
| lxml | 3.4.0 | 结合 libxml2/libxslt 与 ElementTree API 的强大而 Pythonic 的 XML 处理库 |
| beautifulsoup4 | 4.3.2 | 屏幕抓取(网页解析)库 |
| Jinja2 | 2.7.3 | 沙箱化模板引擎(提供类 Django 的非 XML 语法,将模板编译为可执行 Python 代码) |
| MarkupSafe | 0.23 | 为 Python 实现 XML/HTML/XHTML 安全的标记字符串 |
| PyYAML | 3.11 | YAML 解析与生成器 |
| simplejson | 3.6.5 | 简单、快速、可扩展的 JSON 编解码器 |
| reportlab | 3.1.8 | PDF 生成库 |
| requests | 2.4.3 | Apache2 许可的 HTTP 库,"给人类用的" |
| Pillow | 2.6.1 | Python 图像库(fork) |
3.7 语言互操作与桥接
| 名称 | 版本 | 说明 |
|---|---|---|
| rpy2 | 2.4.4 | R 语言的 Python 接口(内嵌 R) |
| oct2py | 2.4.0 | Python 到 GNU Octave 的桥接(从 Python 运行 .m 文件) |
| scilab2py | 0.5 | Python 到 Scilab 的桥接 |
| julia | 0.1.1.5 | Julia 语言的 Python 接口 |
3.8 开发、构建与代码质量工具
| 名称 | 版本 | 说明 |
|---|---|---|
| pip | 1.5.6 | 安装与管理 Python 包的工具 |
| setuptools | 5.8 | 轻松下载、构建、安装、升级和卸载 Python 包 |
| wheel | 0.24.0 | Python 的构建包格式(wheel) |
| cx_Freeze | 4.3.3 | 将 Python 脚本转换为独立 Windows 可执行文件的部署工具(目标机器无需安装 Python 或任何其他库) |
| nose | 1.3.4 | 基于发现的 unittest 扩展(如 NumPy 测试模块使用 nose) |
| pep8 | 1.5.7 | Python 风格指南检查器 |
| pyflakes | 0.8.1 | Python 程序的被动检查器 |
| pylint | 1.3.1 | Logilab 代码分析模块:分析 Python 源码,查找 bug 与质量不佳的迹象 |
| astroid | 1.2.1 | 从 Python 的 ast 重建新的抽象语法树(pylint 依赖) |
| logilab-common | 0.62.1 | Logilab 项目使用的底层 Python 包与模块集合(pylint 依赖) |
| rope_py3k-0.9.4 | 1 | Python 重构库 |
| decorator | 3.4.0 | 用装饰器让 Python 生活更美好 |
| six | 1.8.0 | Python 2 与 3 兼容性工具 |
| colorama | 0.3.2 | 跨平台彩色终端文本 |
| python-dateutil | 2.2 | 标准 datetime 模块的强大扩展 |
| pytz | 2014.7 | 世界时区定义 |
| psutil | 2.1.1 | 以可移植方式获取所有运行进程与系统利用率(CPU、磁盘、内存、网络)信息的接口 |
| networkx | 1.9.1 | 创建与操作图与网络的 Python 包 |
| pyparsing | 2.0.3 | Python 解析模块 |
| pyserial | 2.7 | 封装串口访问的库 |
3.9 发行版自身组件
| 名称 | 版本 | 说明 |
|---|---|---|
| winpython | 1.0 | WinPython 发行版工具,包括 WPPM(包管理器) |
winpython包是本清单中最特殊的一项:它不是第三方依赖,而是发行版自带的控制工具。现代仓库中该角色由wppm模块承担(见 wppm/wppm.py),负责列出已装包、从内置 WheelHouse 安装包、注册 WinPython 等操作;pip 仍是增删包的首选方式(见 README.rst)。
四、自 3.4.2.1 以来的变更(History 文档全录)
与清单文档配套的 changelogs/WinPython-3.4.2.2_History.md 记录了自上一版 3.4.2.1 以来的全部变化,它是判断该版本"新在哪里"的第一手依据。完整内容如下:
4.1 移除的工具
| 名称 | 版本 | 说明 |
|---|---|---|
| TortoiseHg | 2.11.2 | Mercurial 分布式版本控制系统的图形工具集与 shell 扩展 |
这是 3.4.2.2 唯一被移除的组件——为压缩体积,发行版不再捆绑 Mercurial 客户端。可以推断,这一决策与 WinPython"便携、精简、聚焦科学计算"的定位一致:版本控制工具不再属于发行版的核心诉求。
4.2 新增的 Python 包
| 名称 | 版本 | 说明 |
|---|---|---|
| baresql | 0.7.0 | 直接在 Python 数据上玩转 SQL |
| db.py | 0.3.1 | 一个"不烂的"db 包 |
| oct2py | 2.4.0 | Python 到 GNU Octave 的桥接(从 Python 运行 .m 文件) |
三个新包分别补强了**数据查询(baresql)、通用数据库访问(db.py)、科学计算语言互操作(oct2py)**三个方向。其中 oct2py 与既有 rpy2、scilab2py、julia 一起,构成了 3.4.x 时代 WinPython 完整的"多语言科学计算桥接矩阵"。
4.3 升级的 Python 包
| 名称 | 版本变化 | 说明 |
|---|---|---|
| XlsxWriter | 0.5.9 → 0.6.2 | 创建 Excel XLSX 文件的 Python 模块 |
| ipython | 2.3.0 → 2.3.1 | 增强型 Python shell |
| julia | 0.1.1.4 → 0.1.1.5 | Julia 语言的 Python 接口 |
| mahotas | 1.2.1 → 1.2.3 | 计算机视觉库 |
| matplotlib | 1.4.1 → 1.4.2 | 2D 绘图库(可嵌入 PyQt 构建的 GUI 中) |
| numpy-MKL | 1.8.2 → 1.9.1 | NumPy:多维数组处理(SciPy 的核心模块) |
| pandas | 0.15.0 → 0.15.1 | 面向数据分析、时间序列与统计的强大数据结构 |
| pyzmq | 14.3.1 → 14.4.1 | 基于 ZeroMQ 的轻量超快消息传递(IPython Qt console 依赖) |
| simplejson | 3.6.4 → 3.6.5 | 简单、快速、可扩展的 JSON 编解码器 |
| statsmodels | 0.6.0-rc1 → 0.6.0 | 供 SciPy 使用的统计计算与模型 |
升级清单中最值得注意的是两条主线:
- 科学计算核心全面换代:numpy-MKL 从 1.8.2 跨版本升至 1.9.1(连带 matplotlib、pandas、statsmodels 跟进),说明 3.4.2.2 是一次以 NumPy 1.9 为核心的"底层生态刷新";
- 交互体验链路升级:ipython、pyzmq、pandas 同步升级,保证 IPython notebook/Qt console 与新版 pandas 数据结构的兼容性。
五、这份清单是怎么生成的?WPPM 工具链视角
changelogs/下的清单文档并非手写,而是可复现的构建产物——这正是本仓库源码能够直接佐证的地方。
5.1 清单的模板化生成(wppm -md)
在 wppm/wppm.py 中:
render_markdown_for_list()把一组(name, url, version, summary)渲染成标准 Markdown 表格,表头正是Name | Version | Description——与 changelogs/WinPython-3.4.2.2.md 中 Tools 和 Python packages 两个表格的格式完全一致;generate_package_index_markdown()组装整页:首行## WinPython 3.4.2.2,接着是"The following packages are included in ..."引导句,再依次输出 Tools、Python packages 小节——与清单文档的骨架逐字对应;- 数据来源是
get_package_index_data():通过pip list(get_installed_packages)获取已装包及其版本、描述,通过get_installed_tools获取工具列表,并从wheelhouse/included.wheels汇总内置 WheelHouse 包。
因此,你可以用以下命令为任意已安装的 WinPython/Python 发行版现场生成一份与 3.4.2.2 同构的清单:
wppm -md # 输出当前发行版的 Markdown 包清单 wppm -md -j # 输出 JSON 格式(机器可读) wppm -md -ws . # 连同内置 WheelHouse(.)一起对比输出 wppm -ls pand # 列出名称匹配 pand 的已装包 wppm -p pandas # 查看 pandas 的依赖树 wppm -r pytest! # 查看 pytest 的反向(约束方)依赖(以上命令行参数均来自 wppm/wppm.py 的 argparse 帮助文本。)
5.2 版本间差异的可复现对比(wppm -diff)
History 文档所呈现的"移除/新增/升级"结构,同样对应 WPPM 的对比能力:
- wppm/wppm.py 中,
wppm -diff INDEX1 INDEX2直接调用diff.compare_files比较任意两份包索引; - wppm/diff.py 的
compare_files按 Tools / Python packages 等小节逐段 diff(compare_markdown_sections),输出方向敏感:"每次升级都写作 old → new,方向拿反会把升级全部看成降级"; - 源码注释明确指出索引文件就存放在本仓库的
changelogs/目录中,"每个发行版、每个 flavor 一份,任意两份都可比较"(见 wppm/diff.py 对 changelog 文件名的解析逻辑)。
换言之,WinPython-3.4.2.2.md(清单)与WinPython-3.4.2.2_History.md(变更)互为"全量快照"与"增量 diff"的关系:前者是wppm -md的产物形态,后者近似wppm -diff 前一版清单 本版清单的产物形态。
六、发布校验:32/64 位安装包的 MD5 与 SHA-1
changelogs/md5_sha1.txt 为所有历史发行版二进制维护了校验和台账,其中 3.4.2.2 记录于WinPython 2014-11 release(2014-11-19)小节:
| MD5 | SHA-1 | Binary |
|---|---|---|
899e03cdf138d9761e56fd7b1cf779c1 | af135550f9b7d332e35760d18bab00c4a1d1959d | winpython-64bit-3.4.2.2.exe |
99b794f5c885a320991ac76d6ec008b3 | bab62270381169f1779b36161ff2ff77196f9ecd | winpython-32bit-3.4.2.2.exe |
下载安装包后,可用仓库根目录提供的 hash_launch.bat 或任意 MD5/SHA-1 工具校验文件完整性,确认与上表一致后再安装。同一小节还收录了同月发布的 3.3.5.3 与 2.7.8.3(2.7/3.3/3.4 三线并行的发布节奏一目了然)。
七、发布序列中的位置:与 3.4.2.3 的衔接
3.4.2.2 处于 WinPython 3.4.2.x 系列的中间位置。对照下一版清单 changelogs/WinPython-3.4.2.3.md,可以看到紧随其后的演进(均为仓库文档事实):
- 工具:MinGW32 4.8.1 → 4.9.2;
- 核心包继续刷新:pandas 0.15.1 → 0.15.2、PyQt4 4.10.4 → 4.11.3、pylint 1.3.1 → 1.4.0、astroid 1.2.1 → 1.3.2、lxml 3.4.0 → 3.4.1、requests 2.4.3 → 2.5.0、seaborn 0.4.0 → 0.5.1、rpy2 2.4.4 → 2.5.2、python-dateutil 2.2 → 2.3、Pygments 1.6 → 2.0.1、statsmodels 0.6.0 → 0.6.1、sympy 0.7.5 → 0.7.6 等;
- 新增:PuLP(LP 建模与求解)、tqdm(进度条)。
这套"清单文档(快照)+ History 文档(增量)+ md5_sha1.txt(校验)"的组合贯穿整个 changelogs 目录,是回溯 WinPython 每个历史版本构成、追踪任何包版本演进的权威入口。
结语:如何用好这份清单
对使用者而言,changelogs/WinPython-3.4.2.2.md 是一份开箱即用的软件目录:安装 3.4.2.2 后即可直接import numpy、import pandas、import scipy,启动 Spyder 2.3.1 或 IPython 2.3.1 进行交互式科学计算,且全部包均可在离线环境下从发行版内置的 WheelHouse 安装。对研究者或包维护者而言,结合 wppm/wppm.py 的-md/-diff能力,你随时可以为任何已装发行版复刻出与官方清单格式完全一致的索引,并量化比较任意两个版本的包差异——这正是 WinPython"清单即产物、产物可复现"工具链设计的最佳注脚。
延伸阅读:README.rst(工具链总览)、changelogs/WinPython-3.4.2.2_History.md(版本增量)、changelogs/md5_sha1.txt(全量校验台账)、wppm/diff.py(索引 diff 实现)。
- 开发工具
- 构建工具
- CLI
- 包管理器
【免费下载链接】winpython
A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.
相关推荐
WinPython 3.4.2.1 发布清单全解析:随附工具、87 个科学计算预装包与版本变更历史
WinPython 3.4.2.1 发布清单全解析:随附工具、87 个科学计算预装包与版本变更历史 导读:本文以仓库 changelogs/WinPython
开发工具构建工具CLI包管理器WinPython 3.3.2.2 版本全解析:Windows 科学计算 Python 发行版的包清单与变更脉络
WinPython 3.3.2.2 版本全解析:Windows 科学计算 Python 发行版的包清单与变更脉络 WinPython 3.3.2.2 是 Win
开发工具构建工具CLI包管理器WinPython 3.3.2.3 发行版全解析:包清单、科学计算软件栈与版本变更溯源
WinPython 3.3.2.3 发行版全解析:包清单、科学计算软件栈与版本变更溯源 WinPython 是一款面向 Windows 平台、内置大量预编译科学
开发工具构建工具CLI包管理器
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考