【问题标题】:pypi: Why don't all the packages use wheel?pypi:为什么不是所有的包都使用轮子?
【发布时间】:2019-10-10 09:31:45
【问题描述】:

This python wheel 网站说,前 360 个包中只有 300 个使用 wheel。我进一步分析了 Python 生态系统,发现前 5000 个包中约有 2961 个使用wheel,而其他包则没有。

我的问题是:

  1. 如果他们不使用wheel,他们是否使用egg
  2. 他们为什么不使用wheel?是因为作者的懒惰还是其他原因,阻止了他们使用轮子。
  3. 我还从this 帖子中发现wheel 停止安装时间脚本(如果我在这里错了,请纠正我)。那么,是不是因为某些wheel 功能,这些包不能使用wheel(因为它们在安装过程中可能需要setup.py 文件的某些功能,例如安装时间脚本)。

【问题讨论】:

  • 请否决投票者解释一下?
  • 在这里试图解决反对票的人通常是徒劳的——他们早就走了。读者可以给你一些猜测——在这种情况下,这个问题似乎是基于意见的,所以也许人们觉得它不适合 Stack Overflow。也有四票接近,因此出于同样的原因,这可能会被搁置。
  • 谢谢@halfer 我会记住的

标签: python pip pypi python-wheel egg


【解决方案1】:

如果他们不使用轮子,他们会使用鸡蛋吗?

他们可能不会。 Wheels 是构建的发行版,替代方案是提供源发行版,所以这很可能是这些软件包发布的内容(源发行版的文件名以.zip.tar.gz.

他们为什么不使用轮子?这仅仅是作者的懒惰还是其他什么,阻止了他们使用轮子。

除非项目可以使用纯 Python 轮子构建,否则为某个平台构建轮子需要访问类似的构建环境。他们可能没有给定的构建环境,或者没有足够的用户来证明额外工作的合理性。也有可能他们的包很简单,以至于从源代码安装与从内置发行版安装没有太大区别。

我还从这篇文章中发现 wheel 会停止安装时间脚本(如果我在这里错了,请纠正我)。

这是正确的:轮子是为给定平台构建的,因此在安装时除了将包放在路径中之外不要做任何事情。

那么,是不是因为某些 Wheel 功能,那些包不能使用 Wheel(因为在安装过程中它们可能需要 setup.py 文件的某些功能,例如安装时间脚本)。

并非如此,任何可以安装的软件包都可以产生轮子。一个给定的包有可能不仅仅是在安装时安装(例如,它可能还从外部源下载一些大文件或其他东西),但通常不鼓励使用这样的模式。

【讨论】:

  • 非常感谢@Dustin
  • 如果一个“包足够琐碎以至于没有太大区别”,例如*.py, README, setup stuff, no platform dependencies), Pypi / pip 是否可以仅使用轮子-python setup.py bdist_wheel,没有sdist
  • 是的,只要它是纯 python 轮子就可以了,但发布源代码分发也被认为是一种好习惯。确实没有任何理由发布源代码分发。
猜你喜欢
  • 2020-03-09
  • 2019-10-03
  • 2017-01-30
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 2020-01-12
  • 1970-01-01
相关资源
最近更新 更多