初学Python的GUI开发,在使用Pyinstaller打包PySide2为exe程序后,无法打开exe文件。
报错信息为:
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.(该应用程序无法启动,因为无法初始化Qt平台插件。 重新安装应用程序可以解决这个问题。)
Available platform plugins are: minimal (from
C:UsersOrangeDesktop'testPyuiui5distui5PySide2pluginsplatfor ms), offscreen (from
C:UsersOrangeDesktoptestPyuiui5distui5PySide2pluginsplatfor ms), windows (from
C:UsersOrangeDesktoptestPyuiui5distui5PySide2pluginsplatfor ms), minimal, offscreen, windows.
【报错信息如图所示】
我在网络中查询了很多资料,尝试了两天后终于解决问题,现将经验分享给大家。
注意:纠错的前提:在打包成exe之前,尝试在vscode里运行已编写好的程序代码,可以正常运行。 (如果python文件都不能运行,那就是代码的问题了。)
【如下所示:我的代码和可以运行成功的界面】
import os
import PySide2
#下面三行是在import部分就加入pyside2的plugins\platforms文件夹路径
dirname = os.path.dirname(PySide2.__file__)
plugin_path = os.path.join(dirname, 'plugins', 'platforms')
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path
from PySide2.QtWidgets import QApplication,QMessageBox
from PySide2.QtUiTools import QUiLoader
class AppS:
def __init__(self):
self.ui = QUiLoader().load(r'C:\Users\Orange\Desktop\testPyui\ui7\ui7.ui')
app = QApplication([])
stats = AppS()
stats.ui.show()
app.exec_()
在这里补充一下使用Pyinstaller,打包PySide2为exe程序的方法:
代码运行成功后,我在cmd里先cd到放有.ui文件和.py文件的文件夹(C:\Users\Orange\Desktop\testPyui\ui7),然后输入打包程序命令
【如下所示】
C:\Users\Orange>cd C:\Users\Orange\Desktop\testPyui\ui7
C:\Users\Orange\Desktop\testPyui\ui7>pyinstaller test7.py --noconsole --hidden-import PySide2.QtXml
文件夹中会生成许多新文件【如下图】
依次打开新生成的【dist】→【test7】→找到生成的.exe文件【test7.exe】→双击打开
FINE!!!报错了..
--------------------------------------------------------------------------------------------------------------------------------
【报错的解决方法】以下写了3种方法,依次尝试。
方法<1>
添加系统环境变量。【图例是win10】
右键【我的电脑】 单击【属性】 单击【高级系统设置】
单击【环境变量】
在【系统变量】中点击【新建】
变量名:QT_QPA_PLATFORM_PLUGIN_PATH (一个字都不能改!!)
变量值:C:\Users\Orange\AppData\Roaming\Python\Python37\site-packages\PySide2\plugins\platforms
(因下载时的路径差异而有所不同,重点是找到你电脑里【PySide2】文件夹下的【plugins】→【platforms】 )
设置好后,点击【确定】→【确定】,重启电脑!!!!!!
重启电脑后,重复上述打包成exe的步骤,再次双击生成的exe文件(或许)可解决报错问题。
若不能解决,尝试进行以下操作:
方法<2>
将C:\Users\Orange\AppData\Roaming\Python\Python37\site-packages\PySide2\plugins\platforms路径下的如下文件:
全部复制(或覆盖)到 D:\anaconda3\Library\plugins\platforms 文件夹下。【如下图】
复制好后,重复上述打包成exe的步骤,再次双击生成的exe文件可解决报错问题。
若依然不能解决,尝试方法3。
方法<3>
若不能解决,将上述5个.dll文件复制粘贴到生成exe文件的【dist】文件夹,尝试双击exe,应该可以成功打开程序。
【如下图 success】
=========================================================================
初次写文章,有许多不足,主要还是为了记录下解决这个问题的过程(怕以后忘了)。如果能帮助到其他人更是极好的!有任何问题都可在评论区留言,祝愿大家敲码顺利!!