错误:无法找到或加载Qt平台插件"windows" - PyQt + Pyinstaller

Abi*_*bin 8 python pyinstaller pyqt5

我正在尝试使用Pyinstaller捆绑PyQt项目.我尝试使用命令创建包pyinstaller --onedir Hello.py.

这会创建dist文件夹并具有Hello.exe.在运行时它会收到错误:此应用程序无法启动,因为它无法在""中找到或加载Qt平台插件"windows".重新安装应用程序可能会解决此问题.

我在PC上解决了这个问题

  1. 设置环境变量QT_QPA_PLATFORM_PLUGIN_PATH

或者

  1. dist\Hello\PyQt5\Qt\plugins\platform文件夹复制到Hello.exe所在的位置.

但是当我使用命令--onefile捆绑到单个文件并且在未设置QT_QPA_PLATFORM_PLUGIN_PATH的任何其他计算机上运行时,会出现此问题.

有人可以帮助找出问题所在.

nor*_*ius 0

这是很多人(包括我自己)都在努力解决的问题。例如,请参阅此错误报告

建议1(推荐):升级到pyinstaller v3.4。根据这个拉取请求,几个问题已经解决,特别是OP提到的问题。现在普遍对 PyQt5 有更好的支持。

建议2:这个对我有用,但不推荐。它可能对旧版本的 PyQt5 有帮助,或者如果您无法升级到 pyinstaller 3.4:找到 python 发行版的 site-packages 目录,并对 PyInstaller 模块应用以下两项更改:

Edit 1: PyInstaller/loader/rthooks.dat
-    'PyQt5':      ['pyi_rth_qt5.py'],
+    'PyQt5':      ['pyi_rth_qt5.py', 'pyi_rth_qt5plugins.py'],
Edit 2: PyInstaller/utils/hooks/qt.py
-    elif namespace == 'PyQt5':
-        plugin_dir = os.path.join('PyQt5', 'Qt', 'plugins')
Run Code Online (Sandbox Code Playgroud)

来源:请参阅用户 shadchin 的拉取请求 #2991

(我进一步建议使用 python 3.x。我努力为 python 2.7.x 成功捆绑 PyQt5,但我不记得问题是发生在 Windows 还是 macOS 上。)