我如何为一组特定的 python 版本创建一个 Python 轮子? py2.py3-none-any.whl 太宽泛了

How can I create a Python wheel for a specific set of python versions? py2.py3-none-any.whl is too broad

我有一个适用于 Python 2.4-2.7 的软件包。 3.2-3.7。 请注意,这并非针对所有 Python 2 或 Python 3,而是针对特定版本。

碰巧这个包支持 Python 2.4 和 2.5 不同的源代码。

我一直在为每个版本分发鸡蛋,因为它非常具体,而且我 setup.py bdist_wheel 创建的内容太宽泛,会匹配 Python 我不想匹配的版本。

当我创建一个轮子时,我会扩展 py2.py3-non-any.whl,这对于 Python 2.4 和 2.5 是错误的。 (压缩包也是如此)。

PyPi 只允许一个 tarball,所以现在我使用非 2.4、2.5 源。如果能包含 2.4 2.5 源代码就好了。嗯,也许我可以把它作为一个 zip 来做? (可能不会)。

如何通知 setup.py 我只想要一个 py35-non-any.whl?或者 py2 指定用于 2.6 或 2.7? py3 仅适用于 3.2 及更高版本。

或者更一般地说,什么是一种简单的设置方式,以便无论 python 版本 运行 是什么,pip 都会选择正确的 pypi 文件?

当您 运行 setup.py bdist_wheel 并且它创建的内容过于笼统时,头脑简单的人可以执行以下操作:重命名文件。

我在 Pypi 的一个发行版上试过这个并且它有效:wheel 比 tarball 更受欢迎,它会为那个版本拉下 wheel。 运行 该程序随后运行。

在我的具体情况下,setup.py bdist_wheel 创建了 foo-1.2.3-py2.py3-none-any.whl 但这是错误的,因为不想要 Python 2 和 Python 3 的所有版本,但一些非常具体版本。

但是,例如,如果我希望将其调整为仅适用于 Python 2.7 和 Python 3.6,我 rename/copy 将:

foo-1.2.3-py27-none-any.whl
foo-1.2.3-py36-none-any.whl

对于如何完成可能还有其他想法和想法,所以我将此留待定论。如果这确实是最简单的事情,那么如果 setup.py 中有一个选项或任何处理 bdist_wheel 的选项可能会很好,以便它为您重命名。

命名约定中是否允许范围,以便可以指定 3.5-3.7?还是可以以某种方式给出 py25.py26.py27 之类的列表?