【问题标题】:How to release different version's binary to pypi.org?如何将不同版本的二进制文件发布到 pypi.org?
【发布时间】:2021-01-29 12:27:22
【问题描述】:

这里有个问题,如果我在我的包中使用cython,编译的.pyd文件与不同的python版本不同,例如python3.7下编译的.pyd文件将无法被python3.8识别。如果我想将我的包发布到pypi,比如版本号是1.0.0,我该如何上传包,让不同版本的python运行相同的命令pip install package==1.0.0并分别获取自己版本的编译文件?

谢谢。

【问题讨论】:

    标签: python pypi


    【解决方案1】:

    通常,您应该发布两种归档格式。它们被称为“分发包”,我们有:

    • 源分布”(简称“sdist”);
    • 和“内置发行版”(或“二进制发行版”,简称“bdist”)。

    Sdists 不应包含任何特定于平台的组件,在您的情况下不应包含已编译的 Cython 代码。

    另一方面,bdists 旨在包含已编译的代码(例如已编译的 Cython 文件),因此允许特定于平台。

    如今最常见且唯一推荐的 bdist 格式是“wheel”。

    所以你应该分发(在 PyPI 上发布)你的项目的 sdist,如果可能的话,尝试构建尽可能多的特定于平台的 wheels尽你所能。

    例如distribution packages for pandas v2.2.1,只有一个sdist 和许多不同的wheels,涵盖范围广泛:

    • Python 解释器版本
    • 操作系统
    • CPU 位数

    请注意所有文件名的不同之处。 PyPI 不允许上传具有完全相同名称的文件。 pip(和其他与打包相关的工具)能够解释这些文件名并对其内容进行有根据的猜测,从而选择正确的发行版进行下载和安装。

    【讨论】:

    • 重要的部分是特定于平台的轮子将具有不同的名称,如果文件具有不同的名称,PyPI 接受同一版本的多个上传。
    猜你喜欢
    • 2016-06-07
    • 2015-06-18
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    相关资源
    最近更新 更多