利用 PyPI 分发预编译二进制程序(以 redis-server 为例) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
huntzhan
V2EX    程序员

利用 PyPI 分发预编译二进制程序(以 redis-server 为例)

  •  2
     
  •   huntzhan
    huntzhan 2020-03-07 16:18:41 +08:00 2332 次点击
    这是一个创建于 2046 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学习 Python 包管理机制,了解到以下信息:

    • PEP-425: Wheel 打包格式支持声明目标部署平台( platform tag ),且 pip install 会根据当前平台信息( i.e. windows/macos/linux )自动选择匹配对应的 wheel。
    • PEP-513PEP-571 定义了一个兼容性较强的 Linux 依赖集合,希望可以接近“一次编译,到处运行”的目标:It would be ideal if wheel packages could be compiled that would work on any linux system. ... we define a standard subset of the kernel+core userspace ABI that, in practice, is compatible enough that packages conforming to this standard will work on many linux systems

    基于此,可以对任意语言实现的源码进行交叉编译,将编译结果打包成 wheel 格式,发布至 PyPI。用户可直接通过 pip 自动下载安装其平台所需的二进制包。

    基于这个思路,我用 GitHub workflow 在 Linux/MacOS 上编译了 Redis 并发布到 PyPI,详见:

    6 条回复    2020-03-12 02:29:14 +08:00
    Buges
        1
    Buges  
       2020-03-07 16:24:12 +08:00 via Android
    非 Python 项目你用 pypi 分发干嘛,有必要吗?
    huntzhan
        2
    huntzhan  
    OP
       2020-03-07 16:28:54 +08:00
    @Buges 不是所有 Python 项目都是用纯 Python 编写的,有的是 Cython (scikit-learn),有的是深度整合 C/C++( pytorch ),还有的甚至是用 Python 套个壳程序主体是其他语言。这种情况就需要考虑交叉编译与分发的选项。
    Buges
        3
    Buges  
       2020-03-07 16:35:59 +08:00 via Android
    @huntzhan 我知道不是纯 Python,Python 包装的上 pypi 当然无可厚非,但其他的没必要套空壳强行打包成 wheel 吧,不同软件都有自己的分发方式。
    huntzhan
        4
    huntzhan  
    OP
       2020-03-07 16:39:59 +08:00
    @Buges 非常同意。我只是提供一个思路,也没有去提倡把任何程序通过 wheel 分发。
    BiuBiuBiu
        5
    BiuBiuBiu  
       2020-03-12 00:54:27 +08:00
    @huntzhan 你好,曾经在 https://www.zhihu.com/quetion/34039162 这个问题下看到过你关于 SAM 教程的回答,请问能再补一下链接吗?它好像挂了。
    huntzhan
        6
    huntzhan  
    OP
       2020-03-12 02:29:14 +08:00
    @BiuBiuBiu 好周末补下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2718 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:16 PVG 23:16 LAX 08:16 JFK 11:16
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86