PyQt5 - Не удалось загрузить плагин платформы "windows". Доступные платформы: окна, минимальные
Когда я пытаюсь запустить любую программу PyQt5 из Eclipse, я получаю эту ошибку.
Не удалось загрузить плагин платформы "windows". Доступные платформы: окна, минимальные
Я никогда не сталкивался с этой проблемой с PyQt4, но с новой версией.
Я не могу запустить программу. Из других вопросов здесь я знаю, что это происходит при разработке Qt C++, и решение состоит в том, чтобы скопировать некоторые файлы Qt dll в каталог исполняемой программы.
Нужно ли делать то же самое в разработке Python (PyQt5) тоже? Добавить эти файлы в каталог, где находятся мои *.py файлы? Разве это не должно управляться установкой PyQt5?
Спасибо
6 ответов
Я столкнулся с этой проблемой в 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"
Копия C:\Python34\Lib\site-packages\PyQt5\libEGL.dll
в тот же каталог, что и ваш.exe.
Источник: http://bird1110.blogspot.com/2014/04/python-33-pyqt5-and-cxfreeze-exe-on-64.html
У меня была похожая проблема при компиляции моего кода с cx_freeze
,
Копирование папки платформы из установочного каталога python в мою встроенную папку решило проблему. папка "платформы" содержит qminimal.dll
Другое решение, которое работает для меня; Windows 7; PyQt5, Python 3.4 64bit:
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!
Мне нравится ответ Уэтойо, но Анаконда переместила каталог. Это работает для меня Python 3.5.2 Anaconda 4.2.0 на Windows 7.
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)
Я обнаружил, что нужно включить файл qwindows.dll, чтобы мой файл.exe мог работать независимо, не получая ошибку. Для этого добавьте путь qwindows.dll в список файлов данных:
setup(windows=[YOURSCRIPT.py]
, data_files = [('.','DRIVE:\PythonPath\Lib\site-packages\PyQt4\plugings\platforms\qwindows.dll')])
Причина, по которой вы сделали бы это и теперь задаете путь к своей среде, заключается в том, что ваша программа будет работать на любом компьютере, если файл qwindows.dll содержится в том же пакете. Если вы установите только переменную окружения, программа будет успешно работать только на компьютере с установленным PyQt.
Если вы используете PySide2, вы можете проверить это
import os
if os.name == 'nt':
import PySide2
pyqt = os.path.dirname(PySide2.__file__)
QApplication.addLibraryPath(os.path.join(pyqt, "plugins"))
Вот что у меня сработало при использовании дистрибутива Anaconda Python 3.6:
Я установил PyQt5, используя
pip install pyqt5
. Это создаетQt/Plugins
каталог плагинов в../Anaconda3/Lib/site-packages/PyQt5
путь.Вслед за Роджером Алленом и 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.