平时会开发一些小脚本,在工作中使用
想请教一下,打包 exe 的方案有哪些?
目前在使用 pyinstaller ,但是打包过程比较慢,打包后的 exe 感觉也挺大的
有没有更好的方案或者优化教程?
1 Nehcknarf 278 天前 Pyinstaller 还是最方便的,可以写个 shell 脚本去剔除被一并打包的无用动态库,加入 --strip 选项也能减小一定的体积。 另外可以试试 Nuitka ,虽然我也没用过 |
2 NoOneNoBody 278 天前 大是肯定的,要把 python 和三方包也打包进去 如果比较简单,没有 import 三方包,可以让 AI 转为编译语言再编译 exe ,字节就很小 |
![]() | 3 yoiteshaw 278 天前 ![]() 我习惯用 nuitka ,我觉得运行速度会快很多,打包的 exe 大不重要,用户运行起来慢更影响体验。 |
![]() | 4 coderluan 278 天前 这种可以不打包吧,直接写个 bat 下载个 python 再设置下环境变量? |
![]() | 8 NewYear 278 天前 pxe ,除了绕开 Windows ,其他都很好。摊手表情 |
![]() | 9 NewYear 278 天前 pxe ,除了不支持 Windows ,其他都很好。摊手表情 |
![]() | 10 ClericPy 278 天前 ![]() https://github.com/ClericPy/nuitka_simple_gui nuitka 就挺好了,基本不用动脑子,跳过三方库的编译提高速度,单文件会生成缓存目录。 如果对方有 Python 解释器,zipapps 打包 pyz 带依赖或者惰性安装依赖,比连解释器一起打包省点空间 虽然如果我去弄,大概率搞个 web 。。。 |
11 v0rtix 278 天前 小脚本不要用 python 了 用 go 打包最方便 而且体积还小 |
![]() | 13 xqher042 278 天前 python 嵌入式打包,打包新姿势,打包速度比 pyinstaller 还快哦 - 快给大忙人让泳道的文章 - 知乎 https://zhuanlan.zhihu.com/p/691339803 之前看到感觉不错的方式,但还没测试过 |
![]() | 14 ETiV 278 天前 via iPhone 嫌 exe 大,拿 upx 压缩一下,立竿见影 |
15 lxxiil 278 天前 via iPhone rpa 类的 Python 程序的话可以用蓝印 rpa |
16 taoqian52 278 天前 nuitka 可以在打包的时候,选择不打包什么库进去,从而减小体积,但是要运行这个软件的人本地有环境并且装了那些库 |
17 raycool 278 天前 nuitka 用起来不错。 |
![]() | 18 highkay 277 天前 pyinstaller 的兼容性,尤其是 windows 的是目前所有方案中最好的。至于大的问题是因为你当前的 runtime 下面无关的依赖太多了,似乎也没有按照 requiements 裁剪的能力(我理解这里要考虑一些动态加载的能力,不能完全根据 import 来加载),所以我一般是用 conda 单独维护一个打包环境。 |
![]() | 19 zhzy 277 天前 @xqher042 其实如果用了 venv/uv/rye 或者其他类似虚拟环境的工具,也可以手动把 venv 一起打包,写个脚本用 venv 里的 python 启动就行 |
21 lone6 OP @chenbin36255 目前完全没接触过 go ,之前有学习过 java 不知道学习 go 难度大不,而且感觉精力有点不够。目前主要弄一些辅助工作的小脚本,用 python 写起来感觉挺快,挺方便的 |
![]() | 24 highkay 277 天前 @lone6 1. 用 conda 创建一个新环境(这里主要看你的用户的系统,如果特别老的话,比如 win7 ,那么可能需要 py3.7.x ,不然的话就是用最新的就好了) 2. 只需要 pip install 最少的依赖+pyinstaller 3. 测试运行没问题的话再打包,应该就会比较小了 |
25 visper 276 天前 换语言。用 aardio 。如果很简单的话就可以不使用 python 了。如果硬是需要使用 python 有公共的库调用之类。它也支持打包 python. |
![]() | 26 sikong31 276 天前 我放弃 pyinstaller 了,因为一些依赖识别不了要自己加,时间久了会忘记,现在除非版本完全敲定,都是用嵌入式 Python 做环境,安装依赖,直接源码运行,启动速度还快一点。 |
![]() | 29 ClericPy 276 天前 @lone6 纯 python 生成前端的方式太多了。。。前几天还有 fast-html 之类的,最近不也有 gradio 或者 streamlit 这种无脑生成 UI 的么,生态好到 golang 和 rust 流泪 反正平时多尝试吧,大部分用户的一致性看法就是:能 web 就别 Client ,没空升级。。。 |
33 crazyjums999 269 天前 via iPhone |
![]() | 34 linxiaojialin 261 天前 pyinstaller 打包很快啊,你用啥框架写的工具?界面用 tkinter 就可以了,一个小工具 exe 几 M ,最多十几 M |
35 lone6 OP @linxiaojialin 没有使用框架,就一个简单的 py 文件,打包后 30M+ |