目录
- 一、故事开始
- 二、问题分析
- 三、无脑排查
- 四、总结
一、故事开始
2022/3/27 一个风和日丽的下午☀️☀️
近期在学做一些入门级的小项目,写了个小工具的脚本之后,想拓展一下,用PYQT5做个简单的小界面,然后分别在Windows和Mac系统下进行打包,输出应用。
Windows下的打包很顺利,并且一次就成功了。但是当我到Mac系统操作的时候,可谓是一步一个坑!我使用的是pyinstaller,在终端用打包命令 pyinstaller -w --clean main.py
将项目打包成main.app
,双击运行,期望的功能界面出来了,稍微操作一波,小样,这么简单吗?
正当我准备来一波沉浸式体验主功能的时候,wtf ?崩溃了??心里默默做好了准备,要搞心态了!
二、问题分析
通过pyinstaller 执行命令打包完成后,生成了这些文件,主要看下,dist目录,是打包产物
当我双击可执行文件main时,会出现控制台,且展示功能界面,可正常运行。
但是,双击main.app后,就会出现我上面说到的,中途闪退的问题,这次我定位到了是触发了某些事件导致的。
但是由于没有控制台输出,崩溃日志又是编码过的,不接吗的话没法定位具体哪一行代码导致的问题,由于我是新手,还没研究过Python打包产物,所以就先开始了 解决问题三部曲的第一部:Google。
最后定了两个排查方向:
1、进行文件操作的时候,文件路径不对导致找不到文件;
2、print的地方去掉
三、无脑排查
实际上我优先考虑了路径问题,因为分析了通过pycharm运行或者在终端跑脚本运行,都跟app运行的目录略有不同,且执行位置的文件也不一样,所以在路径方面花了较多心思先排查,从什么相对路径换到绝对路径,在不断的无脑打印中逐渐迷失自我。。。
2 hours later~
嗯,很棒!依旧没有解决问题,不过还是有点发现,将.app 拉到终端里,使用 open xx.app打开的时候,居然不会闪退,并且我可以看得到,确确实实是路径有问题,报了一些 dictionary not found
的信息出来,很nice。
这下我直接把路径给写到一个固定的目录去,再次调试,发现再次用控制台open app的方式,已经可以完整跑完功能了,嘿嘿 那么,问题是不是解决了呢,直接操作一波,双击 .app 打开,怀着必胜的心态,开始了烂熟于心的操作,嗯?还是崩了,就如我的心态一般🤮🤮🤮
走投无路了,发现还有另外一个方向没排查过,死马当活马医,试试就试试,把所有print方法都给注掉了,可能是我的努力感动了上天,问题解决了!!! 呵呵呵,5分钟的事,我硬是给搞了2个钟,不过结果还是好的🤡🤡
四、总结
作为一名有探索精神的初级程序🐒,解决问题是关键,但是知道问题的根源是最终目的!我必定要深究到底,为什么会这样,于是 又在Google的世界里遨游了起来~~
又是一个 2 hours later~
文章少之又少,不知道是不是我的描述有问题,竟没有找到一篇能参考的,emmm,好吧,我放弃了,只能暂时先这样,后续等我知道原因后再来补充。如果有大佬了解的话,烦请告知,感谢!
end.