Python包装:轮子vs压缩包(tar.gz)
与鸡蛋相比,滚轮的优势显而易见(请参阅为何不加鸡蛋?https://pypi.python.org/pypi/wheel)。
但是,对我来说,尚不完全清楚使用wheel
over的优点是什么tar.gz
。我可能会错过一些明显的东西,例如“它们相同”。如我所见,它们都可以直接使用pip
(甚至在Windows中)安装,具有相似的尺寸,并且在包装上也需要类似的工作。在我看来,听起来像是在证明包装方法合理时可能会遇到的问题。
编辑:刚刚找到一个例子,tar.gz
可能比轮子更好。CherryPy(https://pypi.python.org/pypi/CherryPy)仅提供适用于Python
3.x的轮子,因此,如果您想拥有一个本地存储库来为Python
2.7和3.x依赖项提供CherryPy,它似乎可以存放压缩包更有意义。这个对吗?(只是在讨论中添加了一些“基于案例”的理由)
-
这为我(直接从车轮PEP)回答了它:
Python需要一种比sdist更易于安装的软件包格式。Python的sdist包由distutils和setuptools构建系统定义,并需要它们,它们运行任意代码来构建和安装并重新编译代码,以便可以将其安装到新的virtualenv中。这种混合构建安装的系统速度慢,难以维护,并且阻碍了构建系统和安装程序的创新。
Wheel试图通过在构建系统和安装程序之间提供更简单的接口来解决这些问题。车轮二进制软件包格式使安装人员不必了解构建系统,可以通过在许多安装中分摊编译时间来节省时间,并且不需要在目标环境中安装构建系统。
https://www.python.org/dev/peps/pep-0427/#rationale
注意,我们所说的tarball是上面所谓的“ sdists”。