46

轮子相对于鸡蛋的优势是显而易见的(请参阅为什么不鸡蛋?https://pypi.python.org/pypi/wheel部分)。

但是,我并不完全清楚使用轮子的优势是什么tar.gz。我可能会遗漏一些明显的东西,比如“它们是一样的”。正如我所看到的,它们都可以直接使用pip(即使在 Windows 中)安装,具有相似的大小,并且在打包时需要类似的努力。在我看来,这听起来像是你在证明包装方法论时可能会遇到的那种问题。

编辑:刚刚找到一个tar.gz可能比轮子更好的例子。CherryPy ( https://pypi.python.org/pypi/CherryPy ) 只为 Python 3.x 提供轮子,所以如果你想有一个本地存储库来为 Python 2.7 和 3.x 依赖项提供 CherryPy,它似乎使存储 tarball 更有意义。这个对吗?(只是为了在讨论中添加一些“基于案例”的理由)

4

2 回答 2

24

这为我回答了这个问题(直接来自车轮 PEP):

Python 需要一种比 sdist 更容易安装的包格式。Python 的 sdist 包由 distutils 和 setuptools 构建系统定义并需要它,运行任意代码来构建和安装并重新编译代码,以便将其安装到新的 virtualenv 中。这种混合构建安装的系统速度慢、难以维护,并且阻碍了构建系统和安装程序的创新。

Wheel 试图通过在构建系统和安装程序之间提供更简单的接口来解决这些问题。Wheel 二进制包格式使安装人员不必了解构建系统,通过在多次安装中分摊编译时间来节省时间,并且无需在目标环境中安装构建系统。

https://www.python.org/dev/peps/pep-0427/#rationale

请注意,我们所说的 tarball 就是上面所说的“sdists”。

于 2017-02-14T12:32:11.330 回答
8

来自Python Wheels

轮子的优点

• 更快地安装纯python 和本机C 扩展包。
• 避免安装时执行任意代码。(避免 setup.py)
• 在 Windows 或 OS X 上安装 C 扩展不需要编译器。
• 允许更好的缓存以进行测试和持续集成。
• 创建.pyc 文件作为安装的一部分,以确保它们与使用的python 解释器匹配。
• 跨平台和机器的安装更加一致。

确保车轮已安装。

python3 -m pip install wheel
于 2015-07-14T08:56:31.053 回答