- 开发工具
- 构建工具
- CLI
- 包管理器
【免费下载链接】winpython
A free Python-distribution for Windows platform, including prebuilt packages for Scientific Python.
导读
本文以 changelogs/WinPython-3.4.4.5.md 为骨架,系统梳理 WinPython 3.4.4.5(Python 3.4.4 时代面向 Windows 的便携式科学计算发行版)内置的全部工具与 Python 包清单,对照 changelogs/WinPython-3.4.4.5_History.md 还原自 3.4.4.3 以来的新增与升级明细,并结合当前仓库源码(winpython/build_winpython.py、wppm/wppm.py、wppm/diff.py)解释这类包清单与变更历史文档是如何被自动生成的。读者读完后,既能按图索骥掌握 3.4.4.5 发行版的完整生态构成,也能理解 WinPython 发行版"包索引 → 变更对比 → 发布文档"的自动化流水线。
发行版概览:3.4.4.5 在 WinPython 版本体系中的位置
WinPython 是面向 Windows 平台的便携式 Python 发行版,其核心价值在于预编译:所有第三方包均已针对 Windows 架构编译为 wheel,开箱即用,无需本机编译工具链。3.4.4.5 是 3.4.x 系列后期的一个维护型快照,版本号3.4.4.5可拆解为:
3.4.4:内置 Python 版本为 3.4.4;.5:WinPython 发行序号(build number),表示这是基于 Python 3.4.4 的第 5 次发行快照。
整个发行包含两部分:Tools(独立于 Python 的辅助工具,本版仅 Pandoc 一项)与Python packages(约 210 个预编译包,覆盖科学计算、机器学习、可视化、Jupyter 交互、数据库、Web 开发等方向)。该清单由仓库中 wppm/wppm.py 的generate_package_index_markdown()方法按固定模板生成(详见下文"包清单文档的生成机制"一节)。
内置工具(Tools):Pandoc 1.17.2
3.4.4.5 发行包仅捆绑一个独立工具:
| 名称 | 版本 | 说明 |
|---|---|---|
| Pandoc | 1.17.2 | 通用文档转换器(universal document converter),可在 Markdown、reStructuredText、HTML、LaTeX、docx 等格式之间互转 |
该工具由t目录(tools 目录)随发行版一起打包。现代构建流程中,工具的存放目录通过 winpython_builds.toml 中每个 flavor 的toolsdirs配置指定(例如bdTools\Tools.dot、bdTools\tools64_pandoc_alone),构建时由 winpython/make.py 的copy_items()统一拷贝到发行目录的t子目录。与之配套,发行版还包含纯 Python 的pypandoc1.3.2(Pandoc 的薄封装),二者共同构成文档转换能力。
Python 包全景:按功能域划分的完整清单
下表完整继承自原文档,包名、版本、描述均以原清单为准(原文档中每个包名附带的 PyPI 等外部链接已省略,可回查 changelogs/WinPython-3.4.4.5.md 原文)。为便于检索,按功能域分组排列。
解释器、打包与发行基础设施
| 包名 | 版本 | 说明 |
|---|---|---|
| Python | 3.4.4 | Python 编程语言及其标准库 |
| pip | 8.1.2 | Python 包安装与管理工具 |
| setuptools | 28.7.1 | 下载、构建、安装、升级、卸载 Python 包 |
| wheel | 0.29.0 | Python 内置包格式 |
| winpython | 1.7.20161101 | WinPython 发行工具集,含 WPPM 包管理器 |
| cx-freeze | 4.3.4 | 将 Python 脚本打包为独立 Windows 可执行文件 |
| mingwpy | 0.1.0b3 | 面向 Python 的 Windows 编译器工具链 |
| cython | 0.25.1 | 以接近 Python 的语法编写 C 扩展的语言 |
| mkl-service | 1.1.2 | 若干 MKL 服务函数的 Python 绑定 |
科学计算核心栈
| 包名 | 版本 | 说明 |
|---|---|---|
| numpy | 1.11.2 | 多维数组处理核心(SciPy 的核心模块) |
| scipy | 0.18.1 | 科学计算库:高等数学、信号处理、优化、统计 |
| pandas | 0.19.1 | 数据分析、时间序列与统计的高性能数据结构 |
| xarray | 0.8.2 | N 维带标签数组与数据集 |
| bottleneck | 1.2.0 | 用 Cython 编写的快速 NumPy 数组函数 |
| numexpr | 2.6.1 | 基于向量化虚拟机的数组表达式快速求值 |
| blosc | 1.4.4 | Blosc 数据压缩器 |
| bcolz | 1.1.0 | 列式压缩数据容器 |
| zarr | 2.1.3 | 分块、压缩的 N 维数组最小实现 |
| bloscpack | 0.11.0 | Blosc 的命令行接口与序列化格式 |
| h5py | 2.6.0 | HDF5 文件接口(直接访问完整 HDF5 C 库) |
| tables | 3.3.0 | 基于 HDF5 的分层数据集管理(可处理极大数据量) |
| netcdf4 | 1.2.4 | netCDF 库(3、4 版)的 Python/NumPy 接口 |
| python-hdf4 | 0.9 | NCSA HDF4 库的 Python 接口 |
| numba | 0.29.0 | 基于 LLVM 的 Python 代码即时编译 |
| llvmlite | 0.14.0 | 基础 LLVM 功能的轻量封装 |
| dask | 0.12.0 | 极简任务调度抽象 |
| distributed | 1.14.0 | 分布式计算 |
| toolz / cytoolz | 0.8.0 / 0.8.0 | 列表处理与函数式工具(Cython 高性能版) |
| partd | 0.3.6 | 可追加的键值存储 |
| heapdict | 1.0.0 | 支持 decrease-key / increase-key 的堆 |
| zict | 0.1.0 | 可变映射工具 |
| blaze | 0.10.1 | Blaze 数据分析引擎 |
| datashape | 0.5.2 | 数据描述语言 |
| odo | 0.5.0 | Python 数据迁移 |
| multipledispatch | 0.4.9 | 相对合理的多分派实现 |
机器学习、深度学习与统计建模
| 包名 | 版本 | 说明 |
|---|---|---|
| scikit-learn | 0.18 | 机器学习与数据挖掘模块集 |
| scikit-image | 0.12.3 | 面向 SciPy 的图像处理工具箱 |
| scikit-neuralnetwork | 0.7 | 兼容 scikit-learn 的深度神经网络封装 |
| scikit-optimize | 0.2 | 基于序贯模型的优化工具箱 |
| theano | 0.8.2 | 面向 CPU/GPU 的数学表达式优化编译器 |
| keras | 1.1.1 | 基于 Theano 的深度学习库 |
| lasagne | 0.2.dev1 | 面向 Theano 的神经网络工具 |
| pymc | 2.3.6 | 马尔可夫链蒙特卡洛(MCMC)采样工具箱 |
| pymc3 | 3.0rc2 | MCMC 采样工具箱(3.x 系列) |
| emcee | 2.2.1 | 仿射不变系综 MCMC 采样 |
| statsmodels | 0.8.0rc1 | 基于 SciPy 的统计计算与模型 |
| pyflux | 0.4.0 | 开源时间序列库 |
| lmfit | 0.9.5 | 带边界与约束的最小二乘拟合 |
| numdifftools | 0.9.17 | 单/多变量自动数值微分 |
| algopy | 0.5.3 | Taylor 算术计算与算法微分 |
| astroml | 0.3 | 天文学机器学习与数据挖掘工具 |
| cvxopt | 1.1.7 | 凸优化包 |
| pulp | 1.6.1 | LP 建模器,可调用 GLPK、COIN CLP/CBC、CPLEX、GUROBI 求解 |
可视化
| 包名 | 版本 | 说明 |
|---|---|---|
| matplotlib | 1.5.3 | 2D 绘图库(可嵌入 PyQt GUI) |
| seaborn | 0.8.dev0 | 统计数据可视化 |
| bokeh | 0.12.3 | Python 交互式 HTML 统计绘图 |
| altair | 1.1.0.dev0 | 高层声明式可视化库 |
| holoviews | 1.6.2 | 可组合、声明式的复杂可视化数据结构 |
| mpld3 | 0.2 | Matplotlib 的 D3 查看器 |
| bqplot | 0.8.4 | 基于 d3.js 与 ipywidgets 的 Jupyter 交互绘图 |
| vega | 0.4.4 | Vega / Vega-Lite 的 IPython/Jupyter widget |
| ipyleaflet | 0.2.1 | 动态 Leaflet 地图的 Jupyter widget |
| wordcloud | 1.2.1 | 词云生成器 |
| brewer2mpl | 1.4.1 | 将 colorbrewer2.org 色图接入 Python 与 matplotlib |
| husl | 4.0.3 | 更人性化的 HSL 颜色空间 |
| pyqtgraph | 0.9.10 | 科学绘图与 GUI 库 |
| guiqwt | 3.0.3 | 高效曲线/图像绘图与科学数据处理 GUI 工具 |
| pythonqwt / pyqwt | 0.5.5 / 5.2.1 | 基于 Qwt 的 Qt 快速绘图绑定 |
| qtawesome | 0.3.3 | PyQt/PySide 应用中的 FontAwesome 图标 |
交互环境与 Jupyter 生态
| 包名 | 版本 | 说明 |
|---|---|---|
| jupyter | 1.0.0 | Jupyter 元包,一次装齐全部组件 |
| notebook | 4.2.3 | Jupyter Notebook |
| ipython | 5.1.0 | 增强版 Python Shell |
| ipykernel | 4.5.0 | Jupyter 的 IPython 内核 |
| ipywidgets | 5.2.2 | Jupyter 的 IPython HTML widgets |
| widgetsnbextension | 1.2.6 | Jupyter 的 IPython HTML widgets |
| qtconsole | 4.2.1 | Jupyter Qt 控制台 |
| jupyter-client | 4.4.0 | Jupyter 元包组件 |
| jupyter-console | 5.0.0 | Jupyter 元包组件 |
| jupyter-core | 4.2.0 | Jupyter 元包组件 |
| nbconvert | 4.2.0 | Jupyter Notebook 格式转换 |
| nbconvert-reportlab | 0.1 | Jupyter Notebook 转换(reportlab 支持) |
| nbformat | 4.1.0 | Jupyter Notebook 格式 |
| nbsphinx | 0.2.10 | 面向 Sphinx 的 Jupyter Notebook 工具 |
| ipython-sql | 0.3.8 | 通过 IPython 访问 RDBMS |
| ipython-genutils | 0.1.0 | 从 IPython 剥离的遗留工具 |
| ipyparallel | 5.2.0 | 基于 IPython 的交互式并行计算 |
| prompt-toolkit | 1.0.8 | 构建强大交互式命令行 |
| ptpython | 0.36 | 基于 prompt_toolkit 的 Python REPL |
| jedi | 0.9.0 | 面向文本编辑器的自动补全工具 |
| traitlets / traittypes | 4.3.1 / 0.0.6 | Traitlets 配置系统及 SciPy 特质类型 |
| entrypoints | 0.2.2 | 从已安装包发现并加载入口点 |
| pickleshare | 0.7.4 | 支持并发的类 shelve 微型数据库 |
| mistune | 0.7.3 | 纯 Python 最快的 Markdown 解析器 |
| pyzmq | 15.4.0 | 基于 ZeroMQ 的轻量高速消息传递(IPython Qt 控制台依赖) |
IDE 与 GUI 工具
| 包名 | 版本 | 说明 |
|---|---|---|
| spyder | 3.1.0.dev0 | 科学 Python 开发环境:面向交互计算与可视化 |
| pyqt4 | 4.11.4 | Qt 跨平台 GUI 工具包的 Python 绑定 |
| qtpy | 1.1.2 | 各 Qt 绑定(PyQt5、PyQt4、PySide)之上的抽象层 |
| pyqtdesignerplugins | 1.1 | 安装 Python Qt Designer 插件(Matplotlib、guiqwt 等) |
| formlayout | 1.1.0 | 免写 GUI 代码创建参数编辑表单/控件 |
| guidata | 1.7.6 | 自动生成的数据编辑与显示 GUI |
| sqlite-bro | 0.8.11 | 单文件 Python 实现的图形化 SQLite 客户端 |
| vitables | 2.1 | 浏览与编辑 HDF5/PyTables 文件的图形工具 |
| idlex | 1.13 | IDLE 扩展 |
| pyaudio | 0.2.9 | PortAudio v19 绑定(跨平台音频输入/输出) |
| pyserial | 3.1.1 | 串口访问封装库 |
数据库与数据访问
| 包名 | 版本 | 说明 |
|---|---|---|
| sqlalchemy | 1.1.3 | SQL 工具包与对象关系映射器 |
| adodbapi | 2.6.0.7 | 基于 Microsoft ADO 实现 PEP 249 DB-API 的纯 Python 包 |
| pyodbc | 3.0.10 | ODBC 的 DB-API 模块 |
| mysql-connector-python | 2.0.4 | 纯 Python MySQL 驱动 |
| pg8000 | 1.10.5 | PostgreSQL 接口库 |
| pymongo | 3.3.0 | MongoDB 的 Python 驱动 |
| redis | 2.10.5 | Redis 键值存储的 Python 客户端 |
| baresql | 0.7.4 | 直接在 Python 数据上执行 SQL |
| db.py | 0.5.2 | 好用的数据库包 |
| sqlparse | 0.2.2 | 非校验型 SQL 解析器 |
| pandas-datareader | 0.2.1 | 从 pandas 代码库抽取的数据读取器 |
Web 开发与网络
| 包名 | 版本 | 说明 |
|---|---|---|
| flask | 0.11.1 | 基于 Werkzeug、Jinja2 的微框架 |
| flask-cors | 2.1.2 | 提供 CORS 装饰器的 Flask 扩展 |
| werkzeug | 0.11.11 | Python Web 开发的瑞士军刀 |
| jinja2 | 2.8 | 沙箱模板引擎(类 Django 非 XML 语法,编译为可执行 Python) |
| markupsafe | 0.23 | XML/HTML/XHTML 安全字符串 |
| itsdangerous | 0.24 | 向不可信环境安全传递受信数据 |
| click | 6.6 | 强大的命令行工具包装 |
| tornado | 4.4.2 | 可扩展的非阻塞 Web 服务器与工具(IPython notebook 依赖) |
| requests | 2.11.1 | 为人类设计的 HTTP 库 |
| requests-file / requests-toolbelt | 1.4 / 0.7.0 | requests 的文件传输与工具箱扩展 |
| boto3 / botocore | 1.3.1 / 1.4.36 | AWS SDK for Python 及底层数据驱动核心 |
| s3fs | 0.0.7 | 基于 S3 的文件系统接口 |
| jmespath | 0.9.0 | JSON 匹配表达式 |
| geopy | 1.11.0 | Python 地理编码工具箱 |
| 1.17.1 | Twitter API 与命令行工具集 | |
| lxml | 3.6.4 | 融合 libxml2/libxslt 与 ElementTree API 的 XML 处理库 |
| beautifulsoup4 | 4.5.1 | 屏幕抓取(Screen-scraping)库 |
| html5lib | 0.999999999 | 基于 WHATWG HTML 规范的 HTML 解析器 |
| webencodings | 0.5 | 遗留 Web 内容的字符编码别名 |
符号计算、数学与其他科学工具
| 包名 | 版本 | 说明 |
|---|---|---|
| sympy | 1.0 | 符号数学库 |
| mpmath | 0.19 | 任意精度浮点运算库 |
| networkx | 1.11 | 图与网络的创建和操作 |
| nltk | 3.2.1 | 自然语言处理工具包 |
| rpy2 | 2.7.8 | 内嵌 R 的 Python 接口 |
| oct2py | 3.5.9 | Python 与 GNU Octave 的桥接 |
| scilab2py | 0.6 | Python 与 Scilab 的桥接 |
| julia | 0.1.1 | Julia 语言的 Python 接口 |
| numdifftools | 0.9.17 | 数值微分问题求解 |
| patsy | 0.4.1 | 用符号公式描述统计模型 |
| pdfrw | 0.3 | 读写 PDF 的纯 Python 库 |
| reportlab | 3.3.0 | PDF 生成库 |
| xlrd / xlsxwriter | 1.0.0 / 0.9.3 | Excel 读取 / XLSX 文件创建 |
| prettytable | 0.7.2 | 以 ASCII 表格形式展示表格数据 |
| pypandoc | 1.3.2 | Pandoc 的薄封装 |
文档工具链
| 包名 | 版本 | 说明 |
|---|---|---|
| sphinx | 1.4.8 | 以 reStructuredText 为标记语言的文档生成工具 |
| sphinx-rtd-theme | 0.1.9 | Sphinx Read the Docs 主题 |
| alabaster | 0.7.9 | 可配置侧边栏的 Sphinx 主题 |
| numpydoc | 0.6.0 | 支持 NumPy 格式 docstring 的 Sphinx 扩展 |
| docrepr | 0.1.0 | 以 HTML 渲染 Python docstring |
| recommonmark | 0.4.0 | 面向 docutils 的 Markdown 解析器 |
| docutils | 0.12 | 纯文本文档处理系统(含 reStructuredText,可输出 HTML/LaTeX) |
| pygments | 2.1.3 | 通用语法高亮器 |
| commonmark | 0.5.4 | CommonMark Markdown 规范的 Python 解析器 |
| markdown | 2.6.7 | Markdown 的 Python 实现 |
| snowballstemmer | 1.2.1 | 15 种词干算法 + Porter 英语词干 |
| babel | 2.3.4 | 国际化工具 |
| imagesize | 0.7.1 | 获取 png/jpeg/jpeg2000/gif 图片尺寸 |
系统、互操作与开发辅助
| 包名 | 版本 | 说明 |
|---|---|---|
| pywin32 | 220.1 | Windows 的 Python 库 |
| pythonnet | 2.2.0.dev1 | Python 与 .Net/Mono 集成 |
| pyopengl | 3.1.1 | OpenGL 及相关 API 的跨平台 Python 绑定 |
| cffi | 1.8.3 | Python 调用 C 代码的外部函数接口 |
| pycparser | 2.17 | Python 实现的 C 解析器 |
| greenlet | 0.4.10 | 轻量进程内并发编程 |
| win-unicode-console | 0.5 | Windows 控制台运行 Python 时启用 Unicode 输入输出 |
| colorama | 0.3.7 | 跨平台彩色终端文本 |
| psutil | 4.4.2 | 跨平台进程信息与系统利用率(CPU、磁盘、内存、网络) |
| six | 1.10.0 | Python 2/3 兼容工具 |
| wrapt | 1.10.8 | 装饰器、包装与 monkey patching 模块 |
| decorator | 4.0.10 | 用装饰器改善 Python 编程 |
| lazy-object-proxy | 1.2.2 | 快速彻底的惰性对象代理 |
| cyordereddict | 1.0.0 | collections.OrderedDict 的 Cython 实现 |
| msgpack-python | 0.4.7 | MessagePack 序列化/反序列化 |
| simplejson | 3.10.0 | 简单、快速、可扩展的 JSON 编解码器 |
| pyyaml | 3.12 | YAML 解析与生成 |
| certifi | 2016.9.26 | Mozilla CA Bundle 的 Python 包 |
| backports-abc | 0.4 | collections.abc 模块新特性的向后移植 |
| monotonic | 1.2 | 面向 Python 2 与 < 3.3 的 time.monotonic() 实现 |
| cloudpickle | 0.2.1 | Python 对象的扩展序列化支持 |
| tblib | 1.3.0 | 回溯序列化库 |
| joblib | 0.10.3 | 轻量流水线:Python 函数作为管道作业 |
| tqdm | 4.8.4 | 简单 Python 进度条 |
| fasteners | 0.14.1 | 有用的锁 |
| locket | 0.2.0 | Linux/Windows 基于文件的锁 |
| clint | 0.5.1 | Python 命令行接口工具 |
| docopt | 0.6.2 | 人性化 Python 参数解析器 |
| args | 0.1.0 | 面向人类的命令行参数 |
| rx | 1.5.3 | Python 响应式扩展(Rx) |
| param | 1.4.1 | 基于 Parameters 的声明式 Python 编程 |
| py | 1.4.31 | 跨 Python 的路径、ini 解析、IO、代码、日志设施 |
| python-dateutil | 2.5.3 | datetime 标准模块的强力扩展 |
| pytz | 2016.7 | 世界时区定义 |
| wcwidth | 0.1.7 | 测量宽字符终端列数 |
| jsonschema | 2.5.1 | JSON Schema 校验实现 |
| cycler | 0.10.0 | 可组合的样式循环 |
| pyparsing | 2.1.10 | Python 解析模块 |
| simplegeneric | 0.8.1 | 简单泛型函数(类似 len()、pickle.dump()) |
| pymeta3 | 0.5.1 | 基于 Meta 的 Python 3/2 模式匹配语言 |
| pybars3 | 0.9.2 | Python 3/2 的 Handlebars.js 模板 |
| pystache | 0.5.4 | Python 版 Mustache |
| clrmagic | 0.0.1a2 | 使用 .NET 语言的 IPython cell magic |
| rope-py3k | 0.9.4.post1 | Python 重构库 |
| pep8 / pycodestyle | 1.7.0 / 2.1.0 | Python 风格指南检查器 |
| pyflakes | 1.3.0 | 被动式 Python 程序检查器 |
| pylint | 1.6.4 | 代码分析模块:查找 bug 与代码质量隐患 |
| astroid | 1.4.8 | 从 Python ast 重建抽象语法树(pylint 依赖) |
| mccabe | 0.5.2 | McCabe 复杂度检查器(flake8 插件) |
| isort | 4.2.5 | Python 导入排序工具 |
| nose | 1.3.7 | 基于发现的 unittest 扩展(NumPy 测试模块使用) |
| pytest | 3.0.3 | 简单强大的 Python 测试 |
| pkginfo | 1.3.2 | 查询 sdist/bdist/已安装包的元数据 |
| twine | 1.8.1 | 与 PyPI 交互的工具集 |
| pygments | 2.1.3 | 语法高亮(前文已列) |
说明:
numdifftools、pygments、mistune等少数包因功能交叉在不同分组中重复出现以方便检索,实际发行清单以 changelogs/WinPython-3.4.4.5.md 的原始顺序为准。
从 3.4.4.3 到 3.4.4.5:一次典型的小版本迭代
配套文档 changelogs/WinPython-3.4.4.5_History.md 记录了自 3.4.4.3 以来的全部变更,从中可以观察 WinPython 的维护节奏。
新增的 15 个包
| 包名 | 版本 | 说明 |
|---|---|---|
| algopy | 0.5.3 | Taylor 算术计算与算法微分 |
| altair | 1.1.0.dev0 | 高层声明式可视化库 |
| clrmagic | 0.0.1a2 | 使用 .NET 语言的 IPython cell magic |
| heapdict | 1.0.0 | 支持 decrease-key / increase-key 的堆 |
| nbconvert-reportlab | 0.1 | Jupyter Notebook 转换(reportlab 支持) |
| numdifftools | 0.9.17 | 数值微分问题求解 |
| pdfrw | 0.3 | 纯 Python 读写 PDF |
| pyflux | 0.4.0 | 开源时间序列库 |
| pypandoc | 1.3.2 | Pandoc 的薄封装 |
| requests-file | 1.4 | requests 的文件传输扩展 |
| scikit-optimize | 0.2 | 基于序贯模型的优化工具箱 |
| tqdm | 4.8.4 | 简单 Python 进度条 |
| traittypes | 0.0.6 | SciPy 特质类型 |
| vega | 0.4.4 | Vega / Vega-Lite 的 Jupyter widget |
| webencodings | 0.5 | 遗留 Web 内容字符编码别名 |
| zict | 0.1.0 | 可变映射工具 |
新增方向清晰:强化文档转换(pypandoc、pdfrw、nbconvert-reportlab)、可视化(altair、vega)、优化与微分(scikit-optimize、numdifftools、algopy)以及交互体验(tqdm、clrmagic、heapdict、zict)。
工具升级
- Pandoc 1.13.1 → 1.17.2:通用文档转换器,跨 4 个小版本升级。
关键包升级(节选)
| 包名 | 版本变化 | 说明 |
|---|---|---|
| numpy | 1.11.1 → 1.11.2 | 科学计算核心维护升级 |
| scipy | 0.18.0rc2 → 0.18.1 | 从 RC 转正式发布 |
| pandas | 0.18.1 → 0.19.1 | 跨两个大版本 |
| matplotlib | 1.5.2 → 1.5.3 | 绘图库维护升级 |
| scikit-learn | 0.17.1 → 0.18 | 机器学习库跨大版本 |
| ipython | 5.0.0 → 5.1.0 | 交互环境升级 |
| jupyter 系列 | notebook 4.2.1→4.2.3、jupyter-client 4.3.0→4.4.0、jupyter-core 4.1.0→4.2.0、ipykernel 4.3.1→4.5.0 | Jupyter 生态整体刷新 |
| keras | 1.0.6 → 1.1.1 | 深度学习库升级 |
| numba | 0.27.0 → 0.29.0 | 基于 LLVM 的 JIT 编译器升级 |
| theano | — | 保持在 0.8.2(未变) |
| spyder | 3.0.0.dev0 → 3.1.0.dev0 | IDE 升级 |
| sqlalchemy | 1.0.14 → 1.1.3 | ORM 跨大版本 |
| winpython | 1.6.20160625 → 1.7.20161101 | 发行工具链(含 WPPM)升级 |
| setuptools | 24.0.2 → 28.7.1 | 打包工具大幅升级 |
| pytest | 2.9.1 → 3.0.3 | 测试框架跨大版本 |
此外还有 bokeh 0.11.1→0.12.3、holoviews 1.6.0→1.6.2、bqplot 0.7.1→0.8.4、dask 0.10.1→0.12.0、distributed 1.11.2→1.14.0、tables 3.2.3→3.3.0、cython 0.24.1→0.25.1、xarray 0.7.2→0.8.2、zarr 1.0.0→2.1.3、requests 2.10.0→2.11.1、psutil 4.3.0→4.4.2、pyzmq 15.3.0→15.4.0、lxml 3.6.0→3.6.4、bottleneck 1.1.0→1.2.0、emcee 2.1.0→2.2.1、seaborn 0.7.1→0.8.dev0、pymongo 3.2.2→3.3.0、tornado 4.4→4.4.2、pillow 3.3.0→3.4.2、pylint 1.6.1→1.6.4 等约 70 项升级,详见 changelogs/WinPython-3.4.4.5_History.md 全文。
包清单与变更历史文档的生成机制:源码级剖析
这份 changelog 并非手工维护,而是 WinPython 构建流水线的自动产物。理解其生成机制,有助于读者自行解读任何历史版本的清单。
包索引 Markdown 的生成
winpython/build_winpython.py 的 Step 7(generate changelog逻辑,约 L312-L347)在执行时调用:
from wppm import wppm result = wppm.Distribution().generate_package_index_markdown() open(r'<build-dir>/WinPython<flavor>-<arch>bit-<version>.md', 'w', encoding='utf-8').write(result)在 wppm/wppm.py 中,generate_package_index_markdown()(L116-L132)组装出与本文开头完全一致的结构:
return f"""## {d["name"]} {d["version"]} The following packages are included in {d["name"]}-{d["architecture_bits"]}bit v{d["version"]} {d["release_level"]}. {self.render_markdown_for_list("Tools", as_tuples(data["tools"]))} {self.render_markdown_for_list("Python packages", as_tuples(data["packages"]))} {self.render_markdown_for_list("WheelHouse packages", as_tuples(data["wheelhouse"]))} """其中每个表格由render_markdown_for_list()(wppm/wppm.py)渲染,格式固定为Name | Version | Description三列,并按包名排序;数据来源为get_package_index_data()(wppm/wppm.py),它调用pip list --format=full枚举发行目录site-packages中实际安装的包,并附带 wheelhouse(发行附带 wheel 库)信息。因此清单内容始终与发行目录的真实安装状态一致,这是"事实准确"的结构性保证。
变更历史的自动对比
changelogs/WinPython-3.4.4.5_History.md 由 wppm/diff.py 生成。构建脚本调用:
from wppm import diff result = diff.compare_package_indexes('3.4.4.5', searchdir=r'<changelogs>', flavor='', architecture=64)其核心流程(wppm/diff.py):
find_previous_version()(L153-L160)在 changelogs 目录中按 PEP 440 版本解析,找出当前版本之前最近的同 flavor/同架构索引(3.4.4.5 的上一个版本是 3.4.4.3);compare_packages()(L61-L74)对两份索引的包名做规范化(-→_、小写)后逐项比较,划分出New / Upgraded / Removed三类,并生成old → new形式的升级行;- 表头写入
History of changes for ... since version ...,文末追加* * *分隔符(L175-L182)。
由于文件名是版本的唯一来源,changelog_versions()(L129-L151)用正则WinPython<flavor>-<arch>bit-(.+)\.(txt|md)$匹配并交给packaging.version.parse解析,因此带b1之类 release level 的版本也能正确参与排序比较。diff.py同时支持命令行直接使用,例如wppm -diff <a>.md <b>.md或python -m wppm.diff --write-changelog <version2> <version1>手工对比任意两份索引(wppm/diff.py)。
如何构建一个类似 3.4.4.5 的发行版:现代构建流水线
虽然 3.4.4.5 是 2016 年的历史版本,但其构建模式在当前仓库中仍然延续,只是参数化程度更高。现代流程以 winpython_builds.toml 为单一事实来源:一个构建由(python_target, flavor)二元组描述,其余路径全部派生(winpython_builds.toml):
[defaults] root_dir_for_builds = "C:\\Winp" find_links = "C:\\Winp\\packages.srcreq" arch = "64" create_installer = "None" [flavors.dot] requirements = "dot_requirements.txt" source_dirs = "packages.win-amd64" toolsdirs = "bdTools\\Tools.dot" [pythons."313"] python_target_release = "31315" release = "1" my_release_level = "b1" builds = ["dot", "slim"]对应到 3.4.4.5 时代的构建,则是 winpython/make.py 中的WinPythonDistributionBuilder:从python-*.zip解压出基础 Python 环境(_extract_python_archive(),L94-L101)、拷贝启动器与工具目录(_copy_essential_files(),L103-L110)、写入scripts/env.ini环境配置(_create_env_config(),L112-L126)。随后 winpython/build_winpython.py 的 8 个 Step 依次执行:清理旧构建 → make.py 建基座 →pip install安装 mandatory/requirements(L281-L291)→ 打补丁使启动器可移动 → 可选并行字节编译 → 安装 wheelhouse 依赖 → 生成 pylock/requir 锁文件 → 生成 changelog → 可选创建 7-Zip 安装包。
其中--bytecode参数(winpython/build_winpython.py)控制字节码编译策略:pip(默认,pip 内联编译)、none(不生成 .pyc,用于一次性构建)、parallel/parallel-N(先--no-compile再用compileall -j多核编译);--only-binary yes(默认)则强制只从 wheel 安装,缺失 wheel 立即失败而非在构建机上现场编译第三方代码(L233-L237)——这正是"预编译发行"承诺的落地保障。
现代视角:如何按 3.4.4.5 的思路复现包组合
如今要复现某个 WinPython 发行版的精确包组合,不再依赖手工清单,而是使用仓库提供的哈希锁文件。winpython/portable/下按构建周期(cycle_2025_04、cycle_2025_05、cycle_2026_01等)存放两类产物:
pylock.64-3_13_7_0dot.toml:pip 锁文件(含哈希);requir.64-3_13_7_0dot.txt:带 hash256 的 requirements 文本(供尚不支持 pylock 的 pip 使用)。
按 README.rst 的说明,仅安装某发行版所组装的 wheel 集合可执行:
python -m pip install --no-deps --require-hashes <requir.64-3_13_7_0dot.txt 的 URL>若包管理器支持 pylock,则直接使用对应.toml。锁文件由构建 Step 6 自动生成:先pip freeze出实际安装清单,再用pip lock --no-deps锁定到 web 与 local 两个源并校验一致性(winpython/build_winpython.py),保证"本地 wheelhouse 能装的组合"与"公网可下载的组合"完全一致——这与 3.4.4.5 的包清单所承诺的"开箱即用、版本确定"一脉相承。
结语
WinPython 3.4.4.5 的包清单文档,看似只是一张 200+ 行的表格,实则是整个发行工程体系的可视化截面:清单由构建流水线从真实安装环境自动生成,变更历史由版本化对比自动推导,包组合由锁文件可精确复现。读者既可以把它当作 2016 年科学计算 Python 生态的"快照地图",也可以顺着 wppm/wppm.py、wppm/diff.py 与 winpython/build_winpython.py 的源码,把"包清单 → 变更文档"这条自动化链路迁移到任何需要发布版本清单的软件项目中。
- 开发工具
- 构建工具
- 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 2.7.9.1 升级历史解析:从 2.7.8.3 的包变更清单看科学计算发行版的演进
WinPython 2.7.9.1 升级历史解析:从 2.7.8.3 的包变更清单看科学计算发行版的演进 导读 本文以仓库 changelogs/WinPyth
开发工具构建工具CLI包管理器WinPython 3.4.1.1 发布包全解析:Python 3.4 科学计算发行版的包清单与构建机制
WinPython 3.4.1.1 发布包全解析:Python 3.4 科学计算发行版的包清单与构建机制 WinPython 3.4.1.1 是 WinPyth
开发工具构建工具CLI包管理器
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考