跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 有人尝试过使用 pypi 分发二进制程序吗?
未分類
17 2 月 2022

有人尝试过使用 pypi 分发二进制程序吗?

有人尝试过使用 pypi 分发二进制程序吗?

資深大佬 : ihciah 43

RT 。有些 go/rust 写的小工具,想让用户能够快速安装(在不安装 go/rust 本身的前提下)。

稍微研究了一下,pypi 支持上传 WHEEL 和 源代码 形式的软件包; WHEEL 形式适合分发带有二进制的东西,可以根据平台系统等拉取对应版本。

但是似乎想直接放 bin 里的时候有点困难,只能在 entry_points.txt 里指定 python 模块名,这样调用二进制就得绕一次 python 。。

有什么更优雅的办法做这件事吗?或者说有什么更方便通用的平台可以分发二进制?

关于为什么想用 pypi 这种专门分发 python 代码的平台: 因为实在是太方便了,各平台(除了 windows)都能直接用内置的软件包管理器安装,并且国内镜像源也比较完善。

大佬有話說 (23)

  • 資深大佬 : necomancer

    conda ?

  • 主 資深大佬 : ihciah

    @necomancer 安装 conda 本身也要手动区分平台并下载安装包(并且也不小),感觉也有点麻烦。

  • 資深大佬 : Buges

    不要这样滥用,pip 安装命令行程序本身就很糟糕,你还不如上 npm 。
    建议写个 brew formula ,mac 和 linux 都可以用。Windows 的话以前都用 scoop ,也可以看看微软自己的 winget ,听说已经内置了。

  • 資深大佬 : ipwx

    你这种方式滥用了。

  • 資深大佬 : virusdefender

    各个操作系统上并不是默认都有 pip ,你这种让用户 curl https://xxx/install.sh | bash 可能更好一些

  • 資深大佬 : necomancer

    @ihciah miniconda 也就 20M 吧……

  • 資深大佬 : Vegetable

    可着 NPM 祸害吧还是

  • 資深大佬 : LeeReamond

    其实我感觉倒不算滥用,毕竟 py 做胶水,其他语言做里子就是 py 的常见特性之一。分发方面我以前折腾过 win ,linux 的多发行版没折腾明白,如果 lz 明白还请教我。确实如 lz 所说无法直接部署到系统目录,需要使用 py 的构建命令能力,但是调用 api 的话 py 有多版本二进制重编译的问题,比如 cython 的构建结果不能跨版本,pyo3 也是一样,发布的 ci 上要费点功夫

  • 資深大佬 : Kobayashi

    pypi 发布二进制,npm 发布 shell 脚本,我觉得你们这帮人是滥用……

  • 資深大佬 : Leviathann

    我觉得还是用 npm 做这个比较好
    npm 连 windows build tool 都能装

  • 資深大佬 : lc1450

    你 go/rust 的事找我 pypi 作甚?

  • 資深大佬 : hxsf

    走正经包管理啊。
    不愿意适配多个包管理器,就留 2 个脚本,一个 bash 一个 cmd ,帮他们下载放到对应位置不就行了?
    折腾花里胡哨的,本来一句 wget 搞定的事情,我还得先确定我的 pip 是好使的?万一我是最小化安装的 linux ,还得装个 python ?

  • 資深大佬 : keepeye

    丢到 oss 或者 github release ,用 shell 拉取不就行了吗

  • 資深大佬 : zjsxwc

    给个 github release 这种下载地址不就好了。

  • 資深大佬 : frostming

    看这里 https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html#the-scripts-keyword-argument
    你只需在 build 期间把 rust 编译的二进制放到对应目录下,就可以打进 wheel 包里
    至于怎么在 build 期间做事情,你随便看个比如说 Pytorch 的 setup.py 就明白了

  • 資深大佬 : kidonng

    用 pypi 的例子不多,用 npm 分发二进制的倒是不少。只要文件不大没啥滥用问题,十几兆的 typescript 每天被拖无数次也没人说啊。

  • 資深大佬 : messense

    https://github.com/PyO3/maturin

  • 資深大佬 : sleeepyy

    如果是 portable 程序的话,你直接对每个平台搞一个 link 来下载对应的可执行文件不就好了?

  • 資深大佬 : kidonng

    另外 npm 分发的话还可以用 npx ,低配 nix run 了属于是

  • 資深大佬 : leavic

    用 python 把工具重写一遍

  • 資深大佬 : deplivesb

    本来一个 wget 能搞定的事情,非要再装一个 pip

  • 資深大佬 : julyclyde

    setup 函数支持 scripts 参数

  • 資深大佬 : O5oz6z3

    pypi 在二进制分发上弯道超车 go 了属于是

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具