Linux 上的 Python Wheels(如何?为啥?)

Posted

技术标签:

【中文标题】Linux 上的 Python Wheels(如何?为啥?)【英文标题】:Python Wheels on linux (how? and why?)Linux 上的 Python Wheels(如何?为什么?) 【发布时间】:2016-11-14 10:20:02 【问题描述】:

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

pip install

在 Windows 上:我下载并安装了***。 在 Ubuntu 上:我应该在 some cases 中获取软件包 BUT 的源代码分发包。 在 Fedora 上:棘手我必须使用 dnf 安装

我也尝试将 wheels 添加到 my package。但我只能上传 windows 的***。

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

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

【问题讨论】:

【参考方案1】:

为什么有些包会为 Linux 平台提供***?

只要源代码分发可用,他们为什么不应该这样做? :)

你的问题不清楚。如果你的意思是

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

然后看看this question 及其答案。如果不是,请澄清您的问题。


在 Ubuntu 上:我应该在 some cases 中获得软件包的源代码分发,但我得到了***。

尝试使用:

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 的 tar 文件 (.tar.gz),在 Windows 上是 ZIP 文件。

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

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

创建一个 gzipped tarball 和一个 zip 文件

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


更多关于包装和***的信息可以在这里找到:https://packaging.python.org/distributing/#packaging-your-project

【讨论】:

当我尝试在 Linux 上上传车轮时出现错误,我会尽快将其粘贴到此处。 (今天) packaging.python.org/current/#id8 "PyPI 目前只允许上传 Windows 和 Mac OS X 的***,它们应该与提供从 python.org 下载的二进制安装程序兼容。必须对***进行增强允许使用 linux ***之前的兼容性标记方案。"

以上是关于Linux 上的 Python Wheels(如何?为啥?)的主要内容,如果未能解决你的问题,请参考以下文章

Python ERROR: Could not build wheels for twisted-iocpsupport, which is required to install pyproject

错误记录Mac 中 Python 报错 ( ERROR: Could not build wheels for numpy which use PEP 517 and cannot be in )(代

Spinning Wheels

如何从 linux 上的 python 脚本获取我的本地 IP 地址? [复制]

linux上的两个python版本。如何将 2.7 设为默认值

URAL 1291 Gear-wheels(BFS)