Linux上的Python Wheels(如何?为什么?)

12

我知道"wheels"是上传到PyPI的二进制模块版本。

通过pip install

  • 在Windows系统上:我可以下载和安装wheels。
  • 在Ubuntu系统上:我应该获取包的源代码分发,但在某些情况下,我会得到wheels。
  • 在Fedora系统上:有些棘手,我必须使用dnf安装

我也尝试将wheels添加到我的软件包中。但我只能上传Windows平台的wheels。

  • 为什么有些软件包提供Linux平台的wheels?
  • 这样做是否可以?提供二进制文件而不是源代码?
  • 为什么我不能提供wheels?

注意:我对Fedora rpm软件包略有了解。现在我对Ubuntu上的wheels感兴趣。

1个回答

10
为什么有些软件包会提供Linux平台的wheel文件?
只要源代码发行版也可用,为什么不提供呢? :)
您的问题不太清楚。如果您的意思是:
为什么有些软件包在Linux平台上提供特定于平台的wheel文件而不是独立于平台的文件?
请参考this question及其答案。如果不是,请澄清您的问题。
在Ubuntu上:我应该获取软件包的源代码分发版,但在某些情况下,我会得到wheels。

尝试使用:

pip install --no-binary :all: somepackage

这应该使得pip在PyPI上下载源代码分发包,但我不知道为什么PyQt5没有源代码包,可能是因为它们不能用pip安装,需要一个完整的编译工具链。

提供二进制文件而不是源代码可以吗?

只要同时提供二进制文件和源代码就可以。我建议你这样做。


我为什么不能提供轮子?
尝试运行python setup.py bdist_wheel。您需要安装wheel包(在PyPI上)才能使其正常工作。如果您的软件包支持Python 2和3,并且不包含C扩展,则添加--universal选项以创建"通用轮子"。
bdist_wheel替换为sdist以创建源分发。它将在dist目录中创建一个存档文件。

sdist creates the archive of the default format for the current platform. The default format is a gzip’ed tar file (.tar.gz) on Unix, and ZIP file on Windows.

You can specify as many formats as you like using the --formats option, for example:

python setup.py sdist --formats=gztar,zip

to create a gzipped tarball and a zip file

(摘自 https://docs.python.org/3/distutils/sourcedist.html)


关于打包和轮子的更多信息,请点击这里:https://packaging.python.org/distributing/#packaging-your-project


当我尝试在Linux上上传wheels时,出现了错误。我会尽快将其粘贴在这里。(今天) - Szabolcs Dombi
2
“PyPI目前只允许上传Windows和Mac OS X wheels,并且它们应该与从python.org下载的二进制安装程序兼容。在允许Linux Wheels上传之前,需要对轮子兼容性标记方案进行改进。” - Eyal Levin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接