PyQt5 - Не удалось загрузить окна плагинов платформы. Доступные платформы: windows, minimal

Когда я пытаюсь запустить любую программу PyQt5 из Eclipse, я получаю эту ошибку.

Не удалось загрузить плагин платформы "windows". Доступные платформы: windows, minimal

Я никогда не сталкивался с этой проблемой с PyQt4, но с новой версией.

Я не могу запустить программу. Из других вопросов здесь я знаю, что это происходит при разработке Qt C ++, и решение состоит в том, чтобы скопировать некоторые файлы DLL Qt в каталог исполняемой программы.

Нужно ли мне делать то же самое при разработке на Python (PyQt5)? Добавить эти файлы в каталог, где находятся мои файлы * .py? Разве это не должно управляться установкой PyQt5?

Спасибо


person Ondrej Vencovsky    schedule 17.07.2013    source источник


Ответы (8)


Я столкнулся с этой проблемой с 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"

person Arun M    schedule 12.08.2013
comment
Отлично, как вы нашли эту переменную? - person McLeary; 01.09.2013
comment
Вы должны объяснить, как установить эту переменную env. - person GLHF; 21.05.2016

Скопируйте C:\Python34\Lib\site-packages\PyQt5\libEGL.dll в тот же каталог, что и ваш .exe.

Источник: http://bird1110.blogspot.com/2014/04/python-33-pyqt5-and-cxfreeze-exe-on-64.html

person Babken Vardanyan    schedule 01.09.2014

у меня была аналогичная проблема при компиляции моего кода с cx_freeze.

Копирование папки платформы из каталога установки python в мою встроенную папку решило проблему. папка "платформы" содержит qminimal.dll

person Fakh.P    schedule 12.04.2017
comment
Спасибо за подсказку! Я использую cx_freeze для упаковки исполняемого файла pyqt5. Я считаю, что могу добавить опцию include_files, которая включает папку платформ. Тогда это могло сработать. - person rtrobin; 26.11.2017

Другое решение, которое работает для меня; 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!

person uetoyo    schedule 04.02.2016
comment
Это работает, только если вы сначала «импортируете PyQt5» github.com/pyqt/python-qt5/ issues / 2 - person G Huxley; 13.01.2017
comment
Конечно, перед вызовом PyQt его нужно импортировать. - person uetoyo; 13.01.2017

Я нашел файл: qwindows.dll необходимо включить, чтобы мой EXE-файл мог работать независимо, не получая сообщения об ошибке. Для этого добавьте путь qwindows.dll в список файлов данных:

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

Причина, по которой вы сделаете это и теперь зададите путь к среде, заключается в том, что ваша программа будет работать на любом компьютере, если файл qwindows.dll находится в том же пакете. Если вы установите только переменную среды, программа будет успешно работать только на компьютере с установленным PyQt.

person Calvin Smythe    schedule 25.01.2016

Мне нравится ответ uetoyo, но Anaconda переместила каталог. Это работает для меня 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)
person Roger Allen    schedule 17.04.2017

Вот что у меня сработало при использовании дистрибутива Anaconda Python 3.6:

  1. Я установил PyQt5, используя pip install pyqt5. Это создает каталог Qt/Pluginsplugins в пути ../Anaconda3/Lib/site-packages/PyQt5.

  2. Вслед за Роджером Алленом и 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.

person AndreBam_    schedule 19.08.2019

если вы используете PySide2, вы можете проверить это

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