Python 用 Gooey 库编写了一个最最简单的调用外部命令行的界面程序,打包后体积 30MB,怎么再次降低,最低能到多少 MB?

95 天前
Apol1oBelvedere  Apol1oBelvedere

Python 用 Gooey 库编写了一个最最简单的调用外部命令行的界面程序,打包后体积 30MB ,怎么再次降低,最低能到多少 MB ?

如果降不下去体积到几兆,就换 Winform 或者 AutoIt 去做了。

2051 次点击
所在节点   Python  Python
19 条回复
ghostben
ghostben
95 天前
https://www.zhihu.com/question/48776632/answer/2336654649 lz 可以参考一下这个。

ps 个人研究了很久,如果真想做 10m 以下的小工具啥的,用 python 其实会很麻烦,不如换个技术栈
Leon6868
Leon6868
95 天前
几乎不可能小于 10mb ,你可以试试 Nuitka 但是我觉得应该帮助不大

Python 写 GUI 就是为了方便嘛,大小肯定不占优势的
SenLief
SenLief
94 天前
python 打包不占优势,如果单文件还是 go
bler
bler
94 天前
不是编译型编程语言,打包后都得带上自身语言的虚拟机的,编译型语言,编译的时候就转化成二进制机器码了,像 python 这种编程语言,开发确实快,但是由于不是直接编译成二进制机器指令,需要带上自身虚拟机肯定大,你只能去找 c ,rust 之类的编程语言去看看,能不能找到好用的库,简化你的编写逻辑
bler
bler
94 天前
好像 go 也可以,直接编译成二进制,go 现在也挺火的,工具库应该也多,可以试试
bler
bler
94 天前
了解了一下 go ,虽然是编译成二进制文件,但是它依赖一个 runtime 运行时的东西,在我看来其实也是属于虚拟机的范畴,只不过相比于 python 这种,应该要小一点,你可以试试打包一下,看看文件大不大
sharkyc
sharkyc
94 天前
python 打包等于带了一套运行环境进去 只能再删删包含的库 降到 10MB 下很难
iorilu
iorilu
94 天前
python 无论怎么弄都要自带一套 python 解释器, 标准库一套东西, 至少 10 几 M

再加上你开发用的图形库等, 图形库一般不会小, 几十 M 很正常

想要小最后换 rust 或 go 等, 当然不考虑跨平台就用微软的
skallz
skallz
94 天前
想要体积小考虑 tauri 这种吧,python 小不了
ltaoo1o
ltaoo1o
94 天前
https://github.com/tiny-craft/tiny-rdm
这个项目用的 wails ,打包后只有 10MB 。

我自己用过的
1 、tauri 打包后有 12MB 左右
2 、flutter 打包后有 24MB 左右

逻辑都非常简单,可以看作是「最小体积」
jjx
jjx
94 天前
老实说, 既然用 python 了
30m 25m 20m 这样的差别从技术角度来说要追求的
但实际用途上完全没有意义, 30m 20m 都可以视为一样

30m 3m 才是有意义的, 但显然做不到
Apol1oBelvedere
Apol1oBelvedere
94 天前
@ghostben 按照教程发现三个库打包进去了,Gooey 和 wx 这两个用于界面删不了,NumPy 26MB 删除。配合 pipenv 命令,最后多番尝试打包出来 20.2 MB 。用如下的命令:
pyinstaller --onefile --noconsole --hidden-import=Gooey --exclude-module numpy D:\Temp\py1\main.py //20.2MB

@bler #4 @iorilu 已在尝试用 Winforms 去做了。
lizhenjia569
lizhenjia569
94 天前
这个取决于 gooey 的依赖库大不大,纯 py 脚本最小可以做到 5MB ,参考韦老师的这个项目: https://github.com/skywind3000/PyStand
CassianVale
CassianVale
94 天前
用 C++的话体积就能降下来了
PTLin
PTLin
94 天前
你说你这个挺简单的,有研究降低打包大小的时间,怕不是早就重写完了
zhmouV2
zhmouV2
94 天前
问个题外话 python 各种打包工具有类似 treeshaking 的机制吗?感觉好像只要 import 就把所有 lib 引入进去了
iorilu
93 天前
@zhmouV2 没有的, python 又不用编译, 不可能扫描全部代码分析的

要用就是整个包打进去
Apol1oBelvedere
89 天前
@ghostben 尝试了一下 Koda 做界面+WindSurf 智能出代码+Autoit3 编译,时间短效率高界面还行。甚至于编写一个 VC 界面程序也是可能的。
Apol1oBelvedere
88 天前
@Apol1oBelvedere #18 更新,找到更强的解决办法:Visual Studio (做界面)和 WindSurf ( AI 生成代码)配合,公用一个项目文件夹,基本无缝完成简单项目,又快又好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1091331

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX