【问题标题】:PyQt5 - Failed to load platform plugin "windows". Available platforms are: windows, minimalPyQt5 - 无法加载平台插件“windows”。可用平台有:windows、minimal
【发布时间】:2013-07-15 17:24:06
【问题描述】:

当我尝试从 Eclipse 运行任何 PyQt5 程序时,我得到了这个错误。

无法加载平台插件“windows”。可用平台有:windows、minimal

我从来没有在 PyQt4 中遇到过这个问题,但是在新版本中。

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

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

谢谢

【问题讨论】:

    标签: python pyqt pyqt5


    【解决方案1】:

    如果你使用 PySide2,你可以检查一下

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

    【讨论】:

      【解决方案2】:

      在使用 Anaconda Python 3.6 发行版时,这对我有用:

      1. 我使用pip install pyqt5 安装了 PyQt5。它的作用是在../Anaconda3/Lib/site-packages/PyQt5 路径中创建一个Qt/Pluginsplugins 目录。

      2. 继 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。

      【讨论】:

        【解决方案3】:

        我喜欢 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)
        

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 感谢您的提示!我正在使用 cx_freeze 来打包我的 pyqt5 可执行文件。我发现我可以在选项中添加“include_files”,其中包括平台文件夹。然后它就可以工作了。
          【解决方案5】:

          另一个适合我的解决方案; Windows 7的; PyQt5,Python 3.4 64 位:

          pyqt = os.path.dirname(PyQt5.__file__)
          QApplication.addLibraryPath(os.path.join(pyqt, "plugins"))
          

          您还可以使用plugins 目录的路径设置环境变量QT_QPA_PLATFORM_PLUGIN_PATH

          os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = qt_platform_plugins_path
          

          这也适用于 PyInstaller!

          【讨论】:

          【解决方案6】:

          我找到了文件:需要包含 qwindows.dll 以允许我的 .exe 文件独立运行而不会出现错误。为此,请将 qwindows.dll 路径添加到您的数据文件列表中:

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

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

          【讨论】:

            【解决方案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

            【讨论】:

              【解决方案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"

              【讨论】:

              • 太棒了,你是怎么找到这个变量的?
              • 您应该解释如何设置该环境变量。
              猜你喜欢
              • 2013-02-04
              • 2013-06-26
              • 1970-01-01
              • 1970-01-01
              • 2014-01-04
              • 2017-03-01
              • 1970-01-01
              • 1970-01-01
              • 2016-11-16
              相关资源
              最近更新 更多