我正在使用 setuptools 等为 PyPI 准备我的第一个包分发。我的源代码分发 (.tar.gz) 运行良好,现在我想知道是否应该提供任何其他格式,如 .zip 和 .egg。
在随机浏览 PyPI 时,我注意到一些项目为不同的 Python 版本提供了鸡蛋以及源代码压缩包。我注意到一两个以 .zip 形式提供源代码分发。
将哪些格式上传到 PyPI 的最佳实践是什么?并且各种安装程序(easy_install、pip)是否对使用哪一个有偏好?
我正在使用 setuptools 等为 PyPI 准备我的第一个包分发。我的源代码分发 (.tar.gz) 运行良好,现在我想知道是否应该提供任何其他格式,如 .zip 和 .egg。
在随机浏览 PyPI 时,我注意到一些项目为不同的 Python 版本提供了鸡蛋以及源代码压缩包。我注意到一两个以 .zip 形式提供源代码分发。
将哪些格式上传到 PyPI 的最佳实践是什么?并且各种安装程序(easy_install、pip)是否对使用哪一个有偏好?
当前的最佳实践是添加源分发 (sdist) 和轮 (bdist_wheel)。例如,看看 numpy 做了什么。
如果你有东西要建造,你可以通过提供一个轮子来为你的用户省去很多麻烦。比较带轮子和不带轮子的 numpy 安装(例如,通过安装他们没有为您的 python 版本创建轮子的版本):没有轮子,您需要安装和使用 Fortran 编译器和 Blas 库。没有它,您甚至不必知道 numpy 使用 Fortran。
如果你有一个纯 Python 包,那么 wheel 格式仍然有一个优点,就是只需将代码复制到正确的位置即可安装。不过,我不确定这个优势有多大
另请参阅:https ://packaging.python.org/guides/distributing-packages-using-setuptools/#wheels
如果您不构建 C 扩展,只需以 tar.gz 格式发送源 tarball。它可以安装在所有平台上。仅当您构建 C 扩展并且您的软件在 Windows 上运行时才需要二进制鸡蛋(可通过 easy_install 安装,而不是 pip),因为人们很少在他们的机器上安装 C 编译器。