2013-07-17 42 views
9

当我尝试从Eclipse运行任何PyQt5程序时,出现此错误。PyQt5 - 无法加载平台插件“窗口”。可用的平台是:windows,最小化

无法加载平台插件“窗口”。可用的平台有:windows,最小化

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

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

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

谢谢

回答

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"

+0

太棒了,你是怎么找到这个变量的? – McLeary

+0

你应该解释如何设置env变量。 – GLHF

0

我找到的文件:qwindows.dll需要纳入,让我的.exe文件以没有得到错误独立运行。要做到这一点,qwindows.dll路径添加到您的数据文件列表:

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

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

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!

+0

这只适用于你'先导入PyQt5' https://github.com/pyqt/python-qt5/issues/2 –

+0

当然,在调用'PyQt'之前,它必须被导入。 – uetoyo

2

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

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

+0

谢谢你的提示!我正在使用cx_freeze来打包我的pyqt5可执行文件。我发现我可以添加'include_files'选项,其中包括平台文件夹。然后它可以工作。 – rtrobin

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) 
相关问题