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.