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

Sza*_*mbi 11 python pypi python-wheel

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

pip install

  • 在Windows上:我下载并安装了轮子.
  • 在Ubuntu上:我应该得到包的源代码分配但是某些情况下我得到了轮子.
  • 在fedora:Tricky我必须用dnf安装

我尝试添加我的包为好.但我只能为窗户上传轮子.

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

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

sel*_*edu 10

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

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

你的问题不明确.如果你的意思

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

然后看看这个问题及其答案.如果没有,请澄清您的问题.


在Ubuntu上:我应该得到包的源代码分配但是在某些情况下我得到了轮子.

尝试使用:

pip install --no-binary :all: somepackage
Run Code Online (Sandbox Code Playgroud)

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


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

只要您提供二进制文件和源代码就可以了.我建议你这样做.


为什么我不能提供轮子?

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

更换bdist_wheelsdist做一个源代码分发.它将在dist目录中创建存档.

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

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

python setup.py sdist --formats=gztar,zip
Run Code Online (Sandbox Code Playgroud)

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

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


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

  • https://packaging.python.org/current/#id8"PyPI目前只允许上传Windows和Mac OS X版本,它们应与从python.org下载的二进制安装程序兼容.必须进行增强在允许使用linux车轮之前的车轮兼容性标记方案." (2认同)