Wheel 是 Python 生态系统中的一种标准打包格式,用于分发和安装 Python 包。它是 PEP 427 中定义的二进制分发标准,旨在替代传统的 .egg 格式,并加快包的安装速度。与源码分发相比,Wheel 格式可以直接包含编译好的二进制文件,使得安装无需编译过程,尤其适用于包含 C 扩展的包。

安装 :

pip install wheel

常见应用场景:

(1)快速安装包

提供编译好的二进制文件,减少用户安装依赖的时间。

(2)跨平台分发

Wheel 文件包含平台和 Python 版本信息,便于打包和部署。

(3)自动化打包工具

配合 setuptools、pip 等工具,实现包的自动构建与发布。

(4)提高 CI/CD 效率

在持续集成环境中,使用 Wheel 可以避免重复编译源码

(5)支持 C 扩展

对于包含 C/C++ 扩展的 Python 包,Wheel 能直接分发编译结果。

◆ ◆

核心概念

1、Wheel 文件结构

Wheel 文件以 .whl 为扩展名,内部是一个 ZIP 压缩包,包含:

• 包的元数据:METADATA、WHEEL 文件。

• 源码或编译后的二进制文件。

• 依赖信息(可选)。

2、兼容性标签

Wheel 文件名遵循格式:

{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl

例如:

numpy-1.25.0-cp311-cp311-win_amd64.whl

• cp311:适用于 CPython 3.11。

• win_amd64:适用于 Windows 64 位。

• 可清楚指明包的兼容 Python 版本和操作系统。

3、二进制 vs 源码 Wheel

• Binary wheel:包含编译好的 C 扩展,可直接安装。

• Pure Python wheel:仅包含 Python 源码,无需编译。

4、构建与安装

• 构建 Wheel 文件:python setup.py bdist_wheel 或 python -m build。

• 安装 Wheel 文件:pip install some_package.whl。

◆ ◆

应用举例

例 1:构建 Wheel 文件

python setup.py bdist_wheel

在 dist/ 目录下生成 .whl 文件,可直接分发或上传到 PyPI。

例 2:安装本地 Wheel 文件

pip install dist/example_package-1.0.0-py3-none-any.whl

无需编译源码即可安装,适合包含 C 扩展的包。

例 3:查看已安装包的 Wheel 信息

pip show numpy

可查看包的版本、安装位置、依赖等信息。如果是 Wheel 安装,通常会显示 pip 的缓存路径中 .whl 文件信息。

例 4:上传 Wheel 到 PyPI

twine upload dist/example_package-1.0.0-py3-none-any.whl

利用 twine 将 Wheel 文件上传到 PyPI,供其他用户安装。

例 5:构建纯 Python Wheel

python -m build --wheel

构建纯 Python 的 Wheel 文件,在跨平台部署中非常方便。

◆ ◆

常用函数与工具速览

bdist_wheel

用于构建 Wheel 分发包。

参数:无(通过 setup.py 配置)。

返回:生成 .whl 文件存放在 dist/ 目录。

pip install [package].whl

安装 Wheel 文件。

参数:Wheel 文件路径或文件名

返回:将包安装到当前 Python 环境。

wheel.version()

查看已安装 Wheel 库的版本。

返回:版本号字符串,例如 '0.42.0'。

twine upload [file].whl

上传 Wheel 文件到 PyPI。

参数:Wheel 文件路径。

返回:上传结果状态。

小结

Wheel 是 Python 包的标准化二进制分发格式,能够加速安装、支持 C 扩展,并明确兼容性信息。

通过 bdist_wheel 构建、pip install 安装以及 twine upload 发布,开发者可以轻松管理和分发 Python 包。

Wheel 极大提高了 Python 包管理的效率,已成为现代 Python 开发和部署的重要工具。

打开网易新闻 查看精彩图片

点赞有美意,赞赏是鼓励