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 开发和部署的重要工具。
![]()
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.