pyinstaller打包exe闪退问题

在介绍闪退问题之前,先介绍一下我的问题是怎么来的:

【问题一】 在写完自己的Python项目之后,希望可以在Windows界面直接双击py脚本来运行程序,结果双击闪退,产生该问题的原因是:
我的项目中引用了图片,Python脚本中对该图片的调用采用的是相对路径,通过双击py脚本的方式需要将对该脚本的调用写成绝对路径的方式,修改成绝对路径后,该问题解决。
【问题二】继上个问题以后,我希望将我的项目放到其他机器运行,此时如果运行的电脑没有Python环境,双击py脚本的方式就不能满足该需求,于是,需要将项目封装成可直接在Windows运行的exe格式,我选择的是pyinstaller封装方式,我安装的环境不能连接互联网,所以采用离线安装的模式,要注意,离线安装同时需要安装pyinstaller的依赖包,加上本身共5个包,安装完后终于可以使用pyinstaller了,但是在封装过程中遇到了新的问题
【问题现象1】
pyinstaller -F xxx.py生成的单个exe文件,双击闪退,报错信息(脚本中引用的图片文件找不到),由于命令窗口闪退,看不清报错信息,所以用了录屏软件,后期逐帧查看,终于找到了报错信息
【问题原因】
pyinstaller -F xxx.py打包形式,默认只会打包py脚本,不包括引用的其他格式的文件(或者打包不全)
【解决方法】
修改打包路径下生成的spec文件,
Analysis这个数组里面添加所有你用到的py文件,格式如图
如果你的项目还引用了其他格式的文件(图片文件,ini文件),需要将这些文件添加到data数组中,数组的每个元素以元组的形式存在,每个元祖的组成是(目录路径,目录名)格式如图,修改完成后,执行pyinstaller Xxx.spec,此时,生成的是一个目录,到了这一步,正常来讲在目录中执行exe文件已经可以正常执行了。
而我的问题是,在我的机器上,可以正常执行,将exe目录打包放到其他机器上,仍然有闪退现象。
仍然是采用录屏的方式,看到了错误原因仍然是找不到图片文件,此时调用的路径是原电脑中的图片绝对路径,所以闪退
【解决方法】
高潮来了,第一个问题中对图片的引用修改成了绝对路径,需要将py文件中的引用修改回相对路径,同时需要修改spec文件,改回相对路径后,pyinstaller xxx.spec,此时生成的dist目录下的exe文件复制到其他机器可以正常执行了,问题终于解决了,绕了一圈是自己给自己挖的坑。
这个时候我已经不关心生成的exe是一个目录还是一个文件了,后期解决再更吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值