pyinstaller、cxfreeze打包python程序生成.exe,出现闪退问题,和not find or load the Qt platform plugin "windows"

背景

最近写了个小程序,使用Pyinstaller和cxfreeze打包均出现错误,要么是闪退,要么就有个黑控制台,后来查阅很多信息,终于解决,但目前头疼的只剩下打包的文件过大这个毛病,跨平台语言一般都有这个毛病吧。所以试了试两个打包程序,最后发现还是cxfreeze打包时,总体积小一点。

建议

不管出现什么情况,把你打包的exe程序拖到cmd命令行中,回车看看有什么错误信息打印出来,这种方法很清晰的知道出现哪些错误。

pyinstaller打包问题

因为我使用的是PyQt5写的一个窗口小程序,使用pyinstaller打包程序时出现,意思是QT库里面少了东西,需要我们自己加上动态链接库:
it could not find or load the Qt platform plugin "windows"
在网上查阅了很多,发现是打包的时候缺少动态链接库,需要在Python的Script文件中找一个叫plugins的文件夹(只要里面那个platforms的文件夹),把plugins文件夹拷贝到自己打包的exe程序目录就行了。
我也像网上的说法那样查找这个文件夹,但是找了很久没找到,因为的的python是在anconda环境下的,后来终于找到这个plugins的文件夹了,鉴于这个文件夹比较难找,我就把它拷贝出来,存到CSDN了,有需要的可以直接到连接的地方下载。下载后直接拷贝到自己的exe程序目录下,双击程序就能运行。
下载地址:https://download.csdn.net/download/qq_35203425/10539384

cxfreeze打包问题

cxfreeze打包工程文件生成.exe,包含numpy,matplotlib, mutiprocess等工具包,运行exe出现闪退问题,使用cxfreeze打包,注意cxfreeze的版本要和python的完全一致,生成的.exe如果有闪退问题,可创建一个如下的.py文件,用cmd、dos运行,查看闪退原因。
但是我的程序在cmd命令行中却能运行。。。真是奇怪了,后来我就试一下把上面说的plugins文件夹也拷贝到cxfreeze打包的exe文件的目录下,这下是不闪退了,但是出现一个那么大的命令行程序,我这明明是窗口程序,却出现那么大命令行程序,啧啧啧,难以忍受,后来又仔细查找原因,终于解决。
解决办法:
当时用cxfreeze打包时,想要隐藏控制台,可以加入一个参数:
--base-name="win32gui"
如:cxfreeze hello.py –base-name=”win32gui”

猜你喜欢

转载自blog.csdn.net/qq_35203425/article/details/81030579