当我尝试从Eclipse运行任何PyQt5程序时,我收到了这个错误。
无法加载平台插件“windows”。可用的平台有:windows,minimal
我从来没有遇到过PyQt4的这个问题,但使用的是新版本。
我无法运行程序。从其他问题我知道它发生在Qt C ++开发中,解决方案是将一些Qt DLL文件复制到可执行程序目录。
我是否也需要在Python开发(PyQt5)中也这样做?将这些文件添加到我的* .py文件所在的目录中?这不应该由PyQt5安装管理吗?
谢谢
答案 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发行版时对我有用的:
我使用pip install pyqt5
安装了PyQt5。它的作用是在Qt/Plugins
路径中创建一个../Anaconda3/Lib/site-packages/PyQt5
插件目录。
继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"))