Python 库以 .whl 结尾是因为 它们是 Wheel 格式的安装包。
Wheel 是 Python 的一种内置打包格式,旨在加快安装速度并替代旧的 .egg 格式。.whl 就是 Wheel 的缩写。
具体原因如下:
1. 它是“内置”的,不需要执行 setup.py
传统的源码发布包是 .tar.gz 或 .zip,安装时需要解压并运行 setup.py。这个过程会执行代码,不仅慢,还可能因为系统缺少编译器而导致包含 C 扩展的库安装失败。
Wheel 是一个已经构建好的包,它直接把文件按照运行时的目录结构打包好,安装时只是解压复制文件,完全不执行构建代码,几秒钟就能装完。
2. 文件名包含大量元信息
一个典型的 .whl 文件名长这样:
text
numpy-1.24.3-cp39-cp39-win_amd64.whl
它通过命名告诉 pip:
这意味着 PyPI 可以同时存放多个不同系统和 Python 版本的包,pip 会根据你的环境自动选择正确的 .whl 文件下载。
3. 支持二进制分发(无需编译)
对于像 NumPy、Pandas、PyTorch 这种包含 C++/CUDA 代码的库,普通用户电脑上往往没有编译环境。通过预编译好的 .whl 文件,作者直接把编译好的 .so 或 .dll 文件放进包中,用户可以直接安装使用。
看到 .whl,就表示这是一个 “开箱即用” 的安装包。它是当前 Python 社区推荐的官方标准包格式。
至于为什么取名叫Wheel
Python 社区有句著名的谚语:
“Don‘t reinvent the wheel.”
(不要重新发明轮子。)
意思是:不要重复造轮子 —— 如果已经有现成的、成熟的解决方案,直接拿来用,而不是自己从头写一个。
→ 所以叫 Wheel(轮子),隐喻“已经造好的轮子,直接滚上去用”。
也许是这么个意思。