解决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是在好几篇博客提到的甚至也是提到最多的,这俩环境变量只能存在一条是第三篇博客提到的,我做的不过是把这些博客按照自己的经验去“撮合”起来才把问题解决,站在巨人的肩膀上,自己也要努力跳起来才能看得更远。

你可能感兴趣的:(qt,python,matplotlib)