解决This application failed to start because no Qt platform plugin could be initialized.

问题分析

本篇文章讨论的问题其实是紧接着我上一篇文章之后发生的,甚至我认为就是因为我在上一篇文章中重装了matplotlib导致的后续的问题…


本次的问题:
错误1:This application failed to start because no Qt platform plugin could be initialized.(弹窗)
错误2:qt.qpa.plugin: Could not find the Qt platform plugin “windows” in “xxxxxx” ,This application failed to start because no Qt platform plugin could be initialized.(cmd中打印异常)
我认为这两个错误其实本质上是一体两面的,错误1出现于需要qt才能打开的软件,例如印象笔记、运行pyqt5写的代码,打开QT的designer的时候;错误2出现于我执行 用pyinstaller打包出来的、包含pyqt5代码的exe文件时,打开的cmd黑窗口中。

看了各种博客,认为引发错误的原因表面是matplotlib的重装(可能是我之前是pip安装的,但最后我改成用conda装),根本原因是系统没找到qt platform 插件的路径。

探索&解决

1.首先按照文章1,我发现pyqt5包路径\Lib\site-packages\PyQt5\Qt中没有plugins\platform,于是使用everything找到我所有qt下的plugins文件夹(就是别的环境中的qt文件夹),直接复制到pyqt5包路径\Lib\site-packages\PyQt5\Qt下,但问题没有解决。
2.接着尝试使用pip重装pyqt5、pyqt5-tools、pyqt5-sip、pyqt5_plugins,问题没解决。
3.我尝试文章2提到的添加环境变量方法,新增系统变量QT_QPA_PLATFORM_PLUGIN_PATH,使其等于pyqt5包路径\Lib\site-packages\PyQt5\Qt\plugins\, 但无效。
4.接着按照另一篇文章设置QT_PLUGIN_PATH,使其等于pyqt5包路径\Lib\site-packages\PyQt5\Qt\plugins\, 失败。
5.我想到弹窗中提到的是platform,或许环境变量中,应该具体到platform的路径于是,我又在QT_QPA_PLATFORM_PLUGIN_PATHQT_PLUGIN_PATH各自添加一条pyqt5包路径\Lib\site-packages\PyQt5\Qt\plugins\platform,但失败。
6.然后又看到一篇文章说QT_QPA_PLATFORM_PLUGIN_PATHQT_PLUGIN_PATH只能有一条,于是我只保留了pyqt5包路径\Lib\site-packages\PyQt5\Qt\plugins\platform,删掉另一条路径。于是!印象笔记能正常打开了!但是exe和代码都不能正常运行,原来印象笔记靠QT_PLUGIN_PATH就能起来!至此距离问题解决更进一步、
7.我其实同时还去QT官网下载安装器,感觉重新安装QT应该是能解决问题的,但是需要50G的空间,我只能慢慢下载…
8.最后,我想会不会和环境变量PATH也有关系,因为绝大多少代码都有依赖PATH,一看PATH中没有QT相关的环境变量于是在PATH变量中添加pyqt5包路径\Lib\site-packages\PyQt5\Qt\plugins\platform,这个困扰我一整天的问题终于成功解决!!!!

总结

对问题的关键解法是第6和8步操作。

吐槽*收获

这个问题是凌晨发现的,本来说好要给客户交付了(小作坊)但是卡在打包这一步,其实上一篇文章已经解决了打包问题,但是打包出来的exe却不能打开就很困扰,其实我也是第一次尝试做QT,结果不但没有按时交付还把自己电脑的软件(比如印象笔记,可能还有没有发现的)弄崩了,心态爆炸。于是休息了一整天,回来花两个小时研究国内外博客(主要还是国内)把问题解决了。
这次的问题其实没有能完全copy的解法,PATH其实有一篇博客提到了但不是加platform的路径,然后QT_QPA_PLATFORM_PLUGIN_PATHQT_PLUGIN_PATH是在好几篇博客提到的甚至也是提到最多的,这俩环境变量只能存在一条是第三篇博客提到的,我做的不过是把这些博客按照自己的经验去“撮合”起来才把问题解决,站在巨人的肩膀上,自己也要努力跳起来才能看得更远。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
出现这个错误是因为QT没有找到正确的平台插件,可以尝试按照以下步骤解决: 1. 确认QT的安装路径,并找到该路径下的“plugins/platforms”目录。 2. 复制“qwindows.dll”文件到编译生成文件所在目录下。(该目录为CMakeLists.txt中add_executable的路径) 3. 检查以下环境变量是否正确设置: - QTDIR: QT的安装路径 - PATH: QT的bin目录,例如:“QTDIR/bin” 4. 如果以上步骤不起作用,可以尝试复制整个“plugins”目录到编译生成文件所在目录下。 引用: Clion运行QT报错Could not find the Qt platform plugin “windows“ in ““ This application failed to ... 找遍了全部的外网教程,都是使用其他的库大部分没有说的很清楚。 qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "" This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fi x this problem. [^1]。 引用: 我的Qt版本为5.15.2,在运行我的程序后,先是弹出我缺少.dll,后面根据QT运行exe遇到Qt5Core.dll等dll文件缺失及无法定位程序输入点于动态链接库问题解决方法_exe文件找不到dll_Mds18的博客-CSDN博客 这个教程放置.dll文件,以及设置环境变量后,运行自己的程序又出现了This application failed to start because no Qt platform plugin could be initialized的错误,参考了​​​​​​​This application failed to start because no Qt platform plugin could be initialized问题解决合集_HaloHoohoo的博客-CSDN博客 [^2]。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值