python 打包exe
起因:闲的蛋疼
过程:扯的蛋疼
结果:不疼了
1、起因(闲的蛋疼)
突然的emo,不想干活,于是乎找遍微信好友,群发了十年八辈子不联系的一群人(此办法学习于曾经这样对我的人),忙?,于是乎没人回消息.....没办法找小伙伴闲扯吧,于是乎找到了狗子,狗子直接甩给我一个excel,然后说:爸爸,帮我看看怎么快速确定每个单元格内容重复多少次。爸爸都叫了我能不帮吗?于是乎我遍搜excel找函数,最后终于找到了,结果不太理想,不太会玩excel,介于爸爸的身份,那就帮到底吧,就用py写个了个脚本处理,直接输出不同单元格元素出现的次数,写好发他了,他告诉我不想装py环境....这就是让嚼碎了喂嘴里呀,我整个又不爽了,写好了你不用那不是让我做无用功嘛,不行,你必须得用,于是乎我就想到了你不想搞环境那我就直接给你搞个可执行文件(windows上就是exe)不就行了,说干就干,马上把百度打开.......你问我打开百度干嘛?你可以去找度娘问问我为啥这样做
2、过程(扯的蛋疼)
1、经过一通cn.bing.com,终于了解到原来如此简单,使用Pyinstaller就能实现
2、说干就干反正有网直接在线安装Pyinstaller
pip install pyinstaller
你如果没有切换国内源可能会比较慢的痛苦
使用清华源下载安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
3、了解一下Pyinstaller指令
指令 | 描述 |
---|---|
-h, --help | 显示此帮助消息并退出 |
-v, --version | 显示程序版本信息并退出。 |
--distpath | 放置捆绑应用的位置,即打包成的文件放置的目录(默认值:./dist) |
--workpath | 所有临时工作文件.log、.pyz 放在哪里 等等(默认:./build) |
--clean | 清理 PyInstaller 缓存并删除临时文件,在构建之前 |
--log-level LEVEL | 构建时控制台消息中的详细信息量。LEVEL可能是TRACE、DEBUG、INFO、WARN、ERROR、CRITICAL之一(默认值:INFO)。 |
-D, --onedir | 创建包含可执行文件的单文件夹捆绑包 (默认) |
-F,--onefile | 创建一个单文件捆绑可执行文件。 |
--specpath | 存储生成的规格文件的文件夹(默认: 当前目录) |
-n NAME,--name | 分配给捆绑应用程序和规范文件的名称 (默认值:第一个脚本的基本名称) |
-p,--pathDir | 搜索导入的路径(如使用 PYTHONPATH)。 允许多个路径,用 ':' 分隔,或者 多次使用此选项。相当于 在规范文件中提供 pathex 参数。 |
--copy-metadata | 复制指定包的元数据。该选项可以多次使用次。 |
-w,--windowed, --noconsole | 重点:这个选项如果没有,那么你就打不出来窗口程序包,Windows 和 Mac OS X:不提供标准 I/O 的控制台窗口。在 Mac OS 这也会触发构建 Mac OS .app 捆绑包。在 Windows 上这个 如果第一个脚本是“.pyw”文件,则会自动设置选项。 |
-i或FILE.exe,IDFILE.icns或图像或或FILE.exe,ID或FILE.icns或图片或“无”>--图标,“无”> | 这里设置的是logo图标,可以是空,FILE.ico:将图标应用于 Windows 可执行文件。 FILE.exe,ID: 解压 带有来自 exe 的 ID 的图标。 FILE.icns:将图标应用到 .app 包上 苹果系统。如果输入的图像文件不是平台格式(ico 在 Windows 上,在 Mac 上为 icns),PyInstaller 尝试使用 Pillow 来翻译 图标转换为正确的格式(如果安装了 Pillow)。使用“NONE”不 应用任何图标,从而使操作系统显示一些默认值(默认值:应用 PyInstaller 的图标)。该选项可以多次使用。 |
指令还有很多,我就不一一列举了,反正我也只是从中挑了几个关键性的看了一下便于接下来使用
4、准备了一个logo,加上我的py文件也就两个
app.py、a.ico
5、开始编译
pyinstaller -F -w -i app.ico app.py
接下来开始疼了,
包打出来了,但是点击一闪而过,卧*,啥原因,想来想去好像我写的本来就是个控制台输出,没有什么可视化界面哦,我擦嘞,还得看看怎么搞个简单的可视化界面出来,于是我就又去简单看了一下py的GUI,用tkinter搞了个简单的页面,页面张啥样?自己看去吧https://github.com/SunArmy/handle_excel/
真爽,然后重新开始编译,出来了一个app包(因为我是Mac电脑),问题来了,我想要exe呀,这小伙用的是win,幸好我电脑有个win的虚机,直接打开,文件放进去开始编译,安装py环境,抱着用新不用旧的观念(害死人),直接安装了py3.12,一路顺丰,开始编译
结果凉凉了,编译失败,打不出来,仔细看了报错信息,跟我说是找不到Windows-64bit-arm,根据路径去看了一下确实没有,只有一个Windows-64bit-intel文件夹,郁闷了,这不应该呀,我电脑确实是M1的处理器,底层ARM架构,但是理论上来讲不应该能拉下来intel的依赖偏偏缺少arm的,
这个过程花费了我大概两个小时,脑细胞死N个亿,头发掉N根,中间自己重新下载过pyinstaller离线包,自己去编译,确实出来了而且能用,但是我还是纠结于为啥直接用就不行呢?
思来想去跟我Mac上唯一的不同可能就是py版本不同,Mac上的版本是3.8的,所以我就果断卸载了3.12重新安装了3.8,一路丝滑,打出来了
3、结果(不疼了,好爽)
至此,在经历了各种苦难之后成功打出了exe文件,给好大儿发过去。
我在网上看到这么一个实用之处分享给你们作为学习动力,假如有个小姐姐需要一个自动化脚本工具,可她电脑又没有py环境,这个时候打个exe发给她是不是就很贴心,什么?你说不如给她装py环境更能体现你的技术,那你也挺聪明的,指不定文件出问题或者不小心编辑到了各种问题都要频繁找你,你真是个心机boy哦🤔