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:

  1. Я установил PyQt5, используя pip install pyqt5. Это создаетQt/Pluginsкаталог плагинов в ../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.

Другие вопросы по тегам