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

时间:2016-07-12 09:04:24

标签: python pypi python-wheel

我知道轮子是在PyPI上传的模块的二进制版本。

pip install

  • 在Windows上:我下载并安装了轮子。
  • 在Ubuntu上:我应该在some cases中得到包 BUT 的源代码分发。我得到了轮子。
  • 关于fedora: Tricky 我必须使用dnf安装

我也尝试将轮次添加到my package。但我只能为窗户上传轮子。

  • 为什么有些软件包会为Linux平台提供轮子?
  • 这没关系吗?提供二进制文件而不是源代码?
  • 为什么我不能提供轮子?

注意:我对Fedora rpm包有一点了解。我现在对Ubuntu的轮子很感兴趣。

1 个答案:

答案 0 :(得分:9)

  

为什么有些软件包会为Linux平台提供轮子?

为什么他们不应该,只要源分布也可用? :)

你的问题不明确。如果你的意思是

  

为什么有些软件包为Linux平台提供特定于平台的轮子而不是独立于平台的轮子?

然后看看this question及其答案。如果没有,请澄清你的问题。

  

在Ubuntu上:我应该在some cases中得到包BUT的源代码分发。我得到了轮子。

尝试使用:

pip install --no-binary :all: somepackage

这应该使pip下载源分发(如果它存在于PyPI上)。我不知道为什么在PyPI上没有PyQt5的源包,可能是因为它们不能与pip一起安装,需要一个完整的工具链来进行编译。

  

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

只要您同时提供二进制文件和源代码,它就没问题。我建议你这样做。

  

为什么我不能提供轮子?

试试python setup.py bdist_wheel。您需要安装wheel包(在PyPI上)才能使其正常运行。如果您的软件包同时支持Python 2和3并且不包含C扩展,请附加--universal选项以生成" universal wheel"。

bdist_wheel替换为sdist以进行源分发。它将在dist目录中创建一个存档。

  

sdist 会为当前平台创建默认格式的存档。默认格式是Unix上的gzip'ed tar文件(.tar.gz)和Windows上的ZIP文件。

     

您可以使用--formats选项指定任意数量的格式,例如:

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

创建一个gzip压缩包和一个zip文件

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

有关包装和轮子的更多信息,请访问:https://packaging.python.org/distributing/#packaging-your-project

相关问题