千万别用 pyinstaller 打包

ke_jun · 2024-10-28 01:34:16 · 249 次点击

折腾了两天了,实在没辙了,来看看有无佬友给点思路?


事情是这样的,我撸了一个 py 项目,AI 自动生成视频,用到了 numpy、manim 等等一堆依赖(100+)


开始是部署到服务端(Docker)但是我的小机太拉了,最多同时跑两个进程就炸机,然后就想到做成客户端,说干就干。


到打包阶段了,试了 pyinstaller,很成功,问题:



  • 启动巨慢,看 issues 用 onedir 模式,还是慢,不过可以加 splash 给用户提示,也能接受

  • 但是!splash 不支持 MacOS,在我的老mac上要启动 40s+,然后没有任何提示,就只能死等(noconsole)


怎么办呢,换方案,nuitka 很多人吹,编译到c,速度飞起,赶紧一试,挖草,我那100+依赖,打了半个小时(32G + i713700)都没打完,这还咋调试,实在没耐心了用下去。


不考虑保护源码,要支持跨平台,还有啥思路呢,下面是我想到的?



  • flet: 打包成 dart flutter,但是…

  • zipapp:py 内置的一种 类似 jar ?,但是还得要客户安py呀

  • inno setup:结合 zipapp 或 nuitka ,只打源码,在安装阶段下载 python embed 然后 pip 安装依赖,但是 macos 好像没类似的操作?

举报· 249 次点击
登录 注册 站外分享
9 条回复  
admini 初学 2024-10-28 01:34:16

这个不应该以服务方式提供吗?直接脚本一键部署啊。

iblackhack 初学 2024-10-28 01:34:16
sin 初学 2024-10-28 01:34:16

这么多包,有其他打包的能打包出来很小吗?是在虚拟环境下建的项目打包的吗?

youvy_lee 初学 2024-10-28 01:34:16

学up主们,打两个整合包,win和mac分开

nameliu 初学 2024-10-28 01:34:16

再写个新程序,专门用来显示提示,与原项目完全无关,仅仅显示提示

检查到启动成功就关闭这个程序?

drsanwujiang 初学 2024-10-28 01:34:16

PyInstaller 真的是字面意义上的打包,相当于在 Python 的基础上有一层包装,必然会对性能有一定的影响,而且很容易逆向。


Nuitka 是我在用的目前最理想的方案,编译到 C,速度拉满,当然这种级别的编译自然相当耗费时间。不过通过恰当的配置,可以使 Nuitka 缓存已编译的依赖,后续再次编译时可以减少编译时间。

linux 初学 2024-10-28 01:34:16

用GO重写.

yyhhyy 初学 2024-10-28 01:34:16

是借鉴的这个项目嘛


zhong_little 初学 2024-10-29 04:25:26

新建虚拟环境,只保留有必要的库,减少打包压力,不过有manim这类库估计也少不了多少依赖 :tieba_087:

返回顶部