PyQt5 - 无法加载平台插件“windows”。可用的平台是:windows,minimal

时间:2013-07-17 08:39:05

标签: python pyqt pyqt5

当我尝试从Eclipse运行任何PyQt5程序时,我收到了这个错误。

  

无法加载平台插件“windows”。可用的平台有:windows,minimal

我从来没有遇到过PyQt4的这个问题,但使用的是新版本。

我无法运行程序。从其他问题我知道它发生在Qt C ++开发中,解决方案是将一些Qt DLL文件复制到可执行程序目录。

我是否也需要在Python开发(PyQt5)中也这样做?将这些文件添加到我的* .py文件所在的目录中?这不应该由PyQt5安装管理吗?

谢谢

8 个答案:

答案 0 :(得分:10)

我在PyQt5 5.0.2,Windows 8,Python 3.3.2中遇到过这个问题。稍有不同的错误消息:

Failed to load platform plugin "windows". Available platforms are:

设置以下环境变量,然后运行该应用程序。

$env:QT_QPA_PLATFORM_PLUGIN_PATH="C:\Python33\Lib\site-packages\PyQt5\plugins\platforms"

答案 1 :(得分:7)

C:\Python34\Lib\site-packages\PyQt5\libEGL.dll复制到与.exe相同的目录。

来源:http://bird1110.blogspot.com/2014/04/python-33-pyqt5-and-cxfreeze-exe-on-64.html

答案 2 :(得分:4)

另一种对我有用的解决方案; Windows 7的; PyQt5,Python 3.4 64位:

pyqt = os.path.dirname(PyQt5.__file__)
QApplication.addLibraryPath(os.path.join(pyqt, "plugins"))

您还可以使用QT_QPA_PLATFORM_PLUGIN_PATH目录的路径设置环境变量plugins

os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = qt_platform_plugins_path

这也适用于PyInstaller!

答案 3 :(得分:3)

在使用cx_freeze编译代码时遇到了类似的问题。

将文件夹平台从python安装目录复制到我的内置文件夹解决了这个问题。 "平台"文件夹包含qminimal.dll

答案 4 :(得分:1)

我找到了文件:需要包含qwindows.dll以允许我的.exe文件独立运行而不会收到错误。为此,请将qwindows.dll路径添加到数据文件列表中:

setup(windows=[YOURSCRIPT.py]
, data_files = [('.','DRIVE:\PythonPath\Lib\site-packages\PyQt4\plugings\platforms\qwindows.dll')]) 

你要这样做并现在设置你的环境路径的原因是,如果qwindows.dll文件保存在同一个包中,你的程序将在任何机器上运行。如果只设置环境变量,程序将只在安装了PyQt的计算机上成功运行。

答案 5 :(得分:1)

我喜欢uetoyo的回答,但Anaconda已经移动了该目录。这适用于Windows 7上的Python 3.5.2 Anaconda 4.2.0。

import os
if os.name == "nt":  # if windows
    import PyQt5
    pyqt_plugins = os.path.join(os.path.dirname(PyQt5.__file__),
                                "..", "..", "..", "Library", "plugins")
    QApplication.addLibraryPath(pyqt_plugins)

答案 6 :(得分:0)

这是使用Anaconda Python 3.6发行版时对我有用的:

  1. 我使用pip install pyqt5安装了PyQt5。它的作用是在Qt/Plugins路径中创建一个../Anaconda3/Lib/site-packages/PyQt5插件目录。

  2. 继Roger Allen和uetoyo之后,我补充说:

if os.name == "nt":  # if windows
    from PyQt5 import __file__
    pyqt_plugins = os.path.join(os.path.dirname(__file__), "Qt", "plugins")
    QApplication.addLibraryPath(pyqt_plugins)
    os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = pyqt_plugins

到我的脚本。它也可以与pyinstaller一起使用。

答案 7 :(得分:0)

如果您使用的是PySide2,则可以与此进行检查

import os
if os.name == 'nt':
    import PySide2
    pyqt = os.path.dirname(PySide2.__file__)
    QApplication.addLibraryPath(os.path.join(pyqt, "plugins"))