pip 如何识别并为包创建 wheel
pip 自动识别并为包创建 wheel 文件的过程是由 Python 包的构建和打包工具链决定的。wheel 是 Python 包的一种二进制格式,旨在加速包的安装过程,避免从源代码编译和构建。如果 pip 安装的包已经有了 .whl 文件,pip 会优先下载并安装该文件,而不是从源代码编译。
pip
wheel
.whl
setuptools
setup.py
为了能够生成 wheel 文件,包的开发者需要确保在其 setup.py 文件中包括了构建和打包的配置,并且需要安装 wheel 库。
如果系统中没有安装 wheel,pip 会默认从源代码编译安装包,而不生成 wheel 文件。
如果目标包没有现成的 .whl 文件,pip 会从源代码开始构建。构建的步骤通常如下:
python setup.py bdist_wheel
安装已存在的 wheel 文件:
查询 PyPI: 当你使用 pip install <package> 时,pip 会查询 PyPI 或其他指定的包索引,检查是否有与目标 Python 版本、系统架构和平台兼容的 .whl 文件。如果有,pip 会直接下载并安装该 .whl 文件。
pip install <package>
文件匹配: .whl 文件的命名规则遵循一定的模式,其中包含了支持的 Python 版本、操作系统、架构等信息。例如,一个 .whl 文件可能被命名为: package_name-1.0.0-cp39-cp39-win_amd64.whl 这个文件表示:
package_name-1.0.0-cp39-cp39-win_amd64.whl
package_name
1.0.0
cp39
win_amd64
pip 会根据当前系统的 Python 版本和架构选择合适的 .whl 文件进行安装。
如果匹配的 .whl 文件存在,pip 会下载并安装它,通常这个过程比从源代码构建安装要快得多,因为 .whl 文件已经是编译后的二进制包。
如果 .whl 文件不可用,pip 会回退到从源代码构建包的方式,执行类似 python setup.py install 的命令。
python setup.py install
如果你是包的开发者,想要确保你的包支持 wheel 格式,可以按照以下步骤:
安装 wheel: 首先,确保你安装了 wheel 包: bash pip install wheel
bash pip install wheel
更新 setup.py 文件: 包的 setup.py 文件应该包含构建设置,通常没有太多需要修改的地方,标准的 setup.py 文件会自动支持 wheel 的构建。
构建 wheel 文件: 在包的根目录下,运行以下命令构建 wheel 文件: bash python setup.py sdist bdist_wheel 这会生成 .whl 文件以及源代码包(.tar.gz 或 .zip),并将它们保存在 dist/ 目录下。
bash python setup.py sdist bdist_wheel
.tar.gz
.zip
dist/
上传到 PyPI: 如果你打算将包发布到 PyPI,确保 .whl 文件已经包含在上传的包中。你可以使用 twine 工具上传: bash twine upload dist/*
twine
bash twine upload dist/*
pip 会优先下载和安装 .whl 文件,而不是从源代码构建。如果包没有提供 wheel 格式,pip 会使用构建工具(如 setuptools 和 wheel)从源代码生成 wheel 文件。为确保包支持 wheel 格式,开发者需要安装 wheel 库并使用 python setup.py bdist_wheel 构建 .whl 文件。