【问题标题】:How to fix "could not find or load the Qt platform plugin windows" while using Matplotlib in PyCharm如何在 PyCharm 中使用 Matplotlib 时修复“找不到或无法加载 Qt 平台插件窗口”
【发布时间】:2017-06-19 01:38:01
【问题描述】:

在 PyCharm 中使用 matplotlib 时出现错误“无法找到或加载 Qt 平台插件窗口”。

我该如何解决这个问题?

【问题讨论】:

标签: python python-3.x pycharm


【解决方案1】:

我在使用 Anaconda3 4.2.0 和 4.3.0.1(64 位)时遇到了同样的问题。当我尝试运行一个使用 matplotlib 的简单程序时,我收到了以下错误消息:

This application failed to start because it could not find or load the Qt platform plugin "windows"

Reinstalling the application may fix this problem.

重新安装并没有解决它。

这有帮助(找到here): 查找 Anaconda 目录,在控制面板/系统/高级系统设置/环境变量下将Library\plugins 子目录(此处为c:\ProgramData\Anaconda3\Library\plugins)设置为环境变量QT_PLUGIN_PATH

设置变量后,如果更改没有立即生效,您可能需要重新启动 PyCharm。


即使在那之后命令行 Python 工作了,TexWorks(它也使用 Qt)显示了一个非常相似的错误消息。将 QT_PLUGIN_PATH 设置为包含 TexWorks 的 Qt DLL 的目录(此处为 C:\Users\chris\AppData\Local\Programs\MiKTeX 2.9\miktex\bin\x64)解决了这两个程序的问题。

【讨论】:

  • 很好的修复!但是这个修复对另一个我也需要 Qt 的软件产生了同样的错误;所以我每次都必须重新创建它。不知道有没有办法避免这种情况。
  • 它适用于 Python,但建议不要将其添加到环境变量中,因为它会破坏其他系统。现在每次我打开我的电脑,Dropbox 都会抱怨缺少 Qt。很高兴知道这个问题的正确答案!
  • @AnttiA 2 年后,如果我修改环境变量,我会遇到确切的问题 - 问题本身已修复,但 Dropbox 不再正常工作。你能找到解决这个问题的方法吗?
【解决方案2】:

如果您正在运行 PyQt5 和 PySide2,这为我解决了问题:

复制以下文件:

\Anaconda3\Lib\site-packages\PySide2\plugins\platforms\qminimal.dll
\Anaconda3\Lib\site-packages\PySide2\plugins\platforms\qoffscreen.dll
\Anaconda3\Lib\site-packages\PySide2\plugins\platforms\qwindows.dll

到:

\Anaconda3\Library\plugins\platforms\

【讨论】:

  • 你能详细说明你是如何解决这个问题的吗?这个问题从何而来?您的解决方案非常有用,我想了解原因。 ^^
【解决方案3】:

我发现这是由于我的 PATH 变量中有 MiKTeX 二进制文件造成的;并且发现了错误的 Qt dll。我只需要重新排列 PATH 条目。

Dependency Walker 是一个非常有用的工具。)

【讨论】:

    【解决方案4】:

    我在 Anaconda 的提示下尝试了以下方法,它解决了这个问题:

    conda remove qt
    conda remove pyqt 
    conda install qt 
    conda install pyqt
    

    【讨论】:

    • 这修复了我的 Conda 环境。删除qt也删除了所有依赖它的库,所以我不得不重新安装它们。
    • 当我在尝试启动 labelImg 时遇到 This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. 时,这有效。谢谢!
    • 这对我有用,但如果你想避免重新安装所有依赖包,请不要卸载任何东西,只需强制重新安装:conda install --force-reinstall pyqtconda install --force-reinstall qt
    【解决方案5】:

    我在使用 PyCharm 时遇到了类似的问题,在主运行中运行良好,但在调试器中却没有,得到相同的错误消息。这发生在我身上,因为我已将我的 Anaconda 安装移动到不同的目录。调试器会检查与 python 位于同一位置的 qt.conf 文件。可以通过运行import sys; print sys.executable 找到此位置。我通过一堆网络搜索找到了这个解决方案,它被深埋here。 qt.conf 文件需要有正确的路径才能使调试器工作。

    我的 qt.conf 文件在记事本中如下所示:

    [Paths]
    Prefix = E:/python/Anaconda3_py35/Library
    Binaries = E:/python/Anaconda3_py35/Library/bin
    Libraries = E:/python/Anaconda3_py35/Library/lib
    Headers = E:/python/Anaconda3_py35/Library/include/qt
    

    【讨论】:

    • 我使用conda-pack 打包环境并将其转移到另一台运行相同操作系统的PC。我没有注意到 qt.conf 文件夹指向之前安装环境的 PC 上的绝对路径。将这些替换为新 PC 上的绝对路径解决了该问题。
    【解决方案6】:

    如果您想以另一种方式可视化您的 matplotlib,请使用不同的后端来生成图形、图表等。

    import matplotlib
    matplotlib.use('TKAgg')
    

    这对我有用。

    【讨论】:

    • 这回避了问题,但考虑到 matplotlib 的灵活性,这对于一些不应忽视的人来说是一个有用的解决方案!
    • 太棒了。除了这个之外,这里的解决方案都不起作用!
    【解决方案7】:

    只需添加一个系统变量:

    QT_QPA_PLATFORM_PLUGIN_PATH
    

    并将其值设置为

    C:\Python34\Lib\site-packages\PyQt4\plugins\platforms
    

    瞧。完成

    【讨论】:

    • 这也适用于 anaconda 环境中的 Centos 盒子。基本上我必须在运行胶水程序之前设置它export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/anaconda/plugins/platform
    【解决方案8】:

    我找到了适合我的解决方案。此解决方案包括一个代码 sn-p 在您从 Pyside2 或 PyQt5 包中导入任何模块之前添加。有关详细信息,请参阅“Qt platform plugin "windows" #2”。

    这段代码sn-p来自链接:

    import os
    import PySide2
    
    dirname = os.path.dirname(PySide2.__file__)
    plugin_path = os.path.join(dirname, 'plugins', 'platforms')
    os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path
    
    from PySide2.QtWidgets import *
    '''
    Your code goes here
    '''
    

    此解决方案适用于 PyQt5 和 PySide2 模块。 我不知道它是否相关,但我之前在系统中添加了QT_PLUGIN_PATH 环境变量。

    该解决方案使我能够在 IDLE 中测试 PySide2 脚本。

    但是,当我尝试运行捆绑脚本 (exe) 时,我遇到了同样的错误。

    通过一些浅层的调试,很明显插件文件夹本身丢失了。我通过在适当的位置添加插件文件夹解决了这个问题:

    C:\Users\xxxx\.spyder-py3\My_QtProjects\Project 1\dist\MyQt_1\PySide2\
    

    【讨论】:

    • 这里建议了两个不同的环境变量和一些解决方案......显然这在 Qt5 的版本之间有所不同?对我来说,这个解决方案有效(Qt5.5.1)
    • 当时我在玩 PySide2,我之前看到的答案指向 PyQt5.x.x,幸运的是,它在我的 PySide2 案例中有效
    【解决方案9】:

    如果 Pycharm 控制台或调试器显示“无法找到或加载 Qt 平台插件窗口”,则 Python EXE 文件可能位于 PyCharm 解释器的不同位置。您可以在文件 -> 设置 -> 解释器中手动选择它。

    1. 设置工作目录:文件 -> 设置 -> 构建、执行、部署 -> 控制台 -> Python 控制台 -> 工作目录。将其设置为所有代码所在的父目录。

    2. 打开控制面板 -> 系统设置 -> 高级系统设置 -> 环境变量 -> 新建。设置变量名QT_PLUGIN_PATH,变量目录:Users\<Username>\Appdata\Local\Continuum\Anaconda2\Library\plugins

    3. 重启 Pycharm。

    【讨论】:

    • 您可以在命令行中使用:setx QT_PLUGIN_PATH c:\users\%username%\anaconda3\Library\plugins。用于创建批处理文件以解决安装问题。
    【解决方案10】:

    我解决了这个问题:

    • 添加路径:

      \Anaconda3\Lib\site-packages\PyQt5\Qt\bin to PATH.
      
    • 设置环境变量:

      QT_PLUGIN_PATH\Anaconda3\Lib\site-packages\PyQt5\Qt\plugins\Anaconda3\Library\plugins

    • 另外,你可以试试:

      pyqt = os.path.dirname(PyQt5.__file__)
      os.environ['QT_PLUGIN_PATH'] = os.path.join(pyqt, "Qt/plugins")
      

    【讨论】:

    • 我喜欢以编程方式添加QT_PLUGIN_PATH 方法。就我而言,它是来自 PyQt5 模块的Qt5/plugins。设置环境变量似乎会干扰其他也使用 Qt 的已安装程序。
    【解决方案11】:

    首先,使用命令:

    conda remove pyqt qt qtpy

    然后安装使用:

    conda install pyqt qt qtpy

    这对我有用。

    【讨论】:

    • 非常感谢。对我来说,虽然简单地使用 pip install PyQt5 安装 PyQt5 解决了这个问题。
    【解决方案12】:

    复制文件夹

    \Anaconda3\Library\plugins\platforms
    

    \$\
    

    $ 是您的项目解释器文件夹。例如:

    "\project\anaconda_env\Scripts\"
    

    因为 PyCharm 调用的是该文件夹中的 python.exe,而不是 \Anaconda3 中的那个。

    【讨论】:

      【解决方案13】:

      WINDOWS 用户解决方案

      使用以下命令创建新的环境变量:

      名称:QT_PLUGIN_PATH 路径:C:\yourpythonpath\Lib\site-packages\PyQt5\Qt\plugins

      exe 文件运行后

      【讨论】:

      • 这个问题的另一个答案中已经提到了这一点
      【解决方案14】:

      在 Windows 上:

      1. 复制文件夹平台:

        C:\Users\%USERNAME%\AppData\Roaming\pyinstaller\bincache00_py35_64bit\pyqt5\qt\plugins\platforms 
        
      2. 将文件夹platform粘贴到文件.exe所在的文件夹位置:

        例子:

        c:\MyFolder\yourFile.exe
        c:\MyFolder\platforms
        

      【讨论】:

        【解决方案15】:

        您可能需要复制Anaconda3\Library 中的“插件”文件。例如,在我的电脑上是

        S:\Anaconda3\Library\plugins
        

        到您的 .exe 文件的相同路径。

        【讨论】:

          【解决方案16】:

          从 PySide2 复制插件并粘贴并覆盖 Miniconda 中对我有用的现有插件。

          (base) C:\ProgramData\Miniconda3\Lib\site-packages\PySide2\plugins\platforms>copy *.dll  C:\ProgramData\Miniconda3\Library\plugins\platforms\
          

          【讨论】:

          • 在使用 miniforge 包管理器的 Windows 计算机上使用 Pyside6(安装了 pip)时遇到了同样的问题。您的解决方案在这里也有效。谢谢
          【解决方案17】:

          我对 Anaconda 也有同样的问题。对我来说,虽然不是很优雅,但最快的解决方案是完全卸载并重新安装 Ananconda。之后,一切都恢复正常了。

          【讨论】:

            【解决方案18】:

            我有同样的问题并以这种方式修复 在 Anaconda 安装文件夹中,我去了:(将其更改为您的安装路径): C:\ProgramData\Anaconda3\Lib\site-packages\PySide2 通过添加以下代码行来编辑此文件:

            # below the line 23 type.__signature__
                pyside_package_dir =  os.path.abspath(os.path.dirname(__file__))
                dirname = os.path.dirname(__file__)
                plugin_path = os.path.join(dirname, 'plugins', 'platforms')
                os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = plugin_path
            

            保存此文件并重试,问题应该消失了:)

            【讨论】:

              【解决方案19】:

              我有同样的问题。按照“Managing environments”中的“激活环境”解决了这个问题。

              在命令行中:

              conda activate myenv
              

              myenv=base 用于我的设置。

              【讨论】:

                【解决方案20】:

                请在脚本中试试这个

                qt_path= os.path.dirname(PyQt5.__file__)
                os.environ['QT_PLUGIN_PATH'] = os.path.join(qt_path, "Qt/plugins")
                

                【讨论】:

                  【解决方案21】:

                  我知道上面的每个人都提供了各种方法来解决 OP 的问题。我只是想补充一些建议。

                  通过添加 QT_PLUGIN_PATH = C:\Users{YOUR_USERNAME}\Anaconda3\Library\plugins 作为您的本地机器环境变量,它有助于解决上述 OP 的 PyCharm 问题。但是,这会破坏您机器中的其他系统,例如:Dropbox 报告缺少 QT、AMD 设置无法启动(这发生在我这边)等。

                  可以在 PyCharm 的 python 解释器设置中添加环境变量,而不是在本地添加 QT_PLUGIN_PATH ,如下所示:

                  这种方法不仅让你的 PyCharm 的 python.exe 能够搜索那些 DLL,而且不会破坏其他系统的 QT 查找路径。

                  谢谢

                  【讨论】:

                  • 这不是一个合适的解决方案。只是在实际修复之前的快速解决方法
                  【解决方案22】:

                  我安装了一个包含我不需要的 QT-gui 的软件包。

                  所以我刚刚从我的环境中删除了所有 Qt 模块。

                  pip freeze | grep -i qt
                  
                  PyQt5==5.15.4
                  PyQt5-Qt5==5.15.2
                  PyQt5-sip==12.9.0
                  QtPy==1.9.0
                  
                  pip uninstall PyQt5
                  pip uninstall PyQt5-Qt5
                  pip uninstall PyQt5-sip
                  pip uninstall QtPy
                  

                  问题解决了。

                  【讨论】:

                    【解决方案23】:

                    就我而言,为了让 PyQt5 在 Windows 上运行,我遇到了多个组合问题,请参阅 DLL load failed when importing PyQt5

                    【讨论】:

                      【解决方案24】:

                      我在使用 Qt 5.9 示例 btscanner.exe 时遇到了同样的问题。在我的情况下有效的是:

                      1. btscanner.exe 所在的文件夹创建一个文件夹(我的是 c:\temp\BlueTouth
                      2. 从命令提示符 windeployqt.exe 运行如下: c:\qt\qt5.9.0\msvc2015\bin\windeployqt c:\temp\BlueTouth /* windeplyqt 是标准的 Qt 工具,可以将您的应用程序与任何需要的内容打包在一起 库或额外文件,并准备在其他机器上部署 */

                      3. 结果应该是这样的:

                      C:\temp\BlueTouth\btscanner.exe 32 bit, release executable
                      Adding Qt5Svg for qsvgicon.dll
                      Skipping plugin qtvirtualkeyboardplugin.dll due to disabled dependencies.
                      Direct dependencies: Qt5Bluetooth Qt5Core Qt5Gui Qt5Widgets
                      All dependencies   : Qt5Bluetooth Qt5Core Qt5Gui Qt5Widgets
                      To be deployed     : Qt5Bluetooth Qt5Core Qt5Gui Qt5Svg Qt5Widgets
                      Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.
                      Updating Qt5Bluetooth.dll.
                      Updating Qt5Core.dll.
                      Updating Qt5Gui.dll.
                      Updating Qt5Svg.dll.
                      Updating Qt5Widgets.dll.
                      Updating libGLESV2.dll.
                      Updating libEGL.dll.
                      Updating D3Dcompiler_47.dll.
                      Updating opengl32sw.dll.
                      Patching Qt5Core.dll...
                      Creating directory C:/temp/BlueTouth/iconengines.
                      Updating qsvgicon.dll.
                      Creating directory C:/temp/BlueTouth/imageformats.
                      Updating qgif.dll.
                      Updating qicns.dll.
                      Updating qico.dll.
                      Updating qjpeg.dll.
                      Updating qsvg.dll.
                      Updating qtga.dll.
                      Updating qtiff.dll.
                      Updating qwbmp.dll.
                      Updating qwebp.dll.
                      Creating directory C:/temp/BlueTouth/platforms.
                      Updating qwindows.dll.
                      Creating C:\temp\BlueTouth\translations...
                      Creating qt_bg.qm...
                      Creating qt_ca.qm...
                      Creating qt_cs.qm...
                      Creating qt_da.qm...
                      Creating qt_de.qm...
                      Creating qt_en.qm...
                      Creating qt_es.qm...
                      Creating qt_fi.qm...
                      Creating qt_fr.qm...
                      Creating qt_gd.qm...
                      Creating qt_he.qm...
                      Creating qt_hu.qm...
                      Creating qt_it.qm...
                      Creating qt_ja.qm...
                      Creating qt_ko.qm...
                      Creating qt_lv.qm...
                      Creating qt_pl.qm...
                      Creating qt_ru.qm...
                      Creating qt_sk.qm...
                      Creating qt_uk.qm...
                      
                      1. 如果你看一下 c:\temp\BlueTouth 文件夹会看到 图标引擎、图像格式、平台、翻译、 和文件 D3Dcompiler_47.dll、libEGL.dll、libGLESV2.dll、opengl32sw.dll、 Qt5Bluetooth.dll、Qt5Core.dll、Qt5Gui.dll、Qt5Svg.dll、Qt5Widgets.dll.

                      这些是运行 btscanner.exe 所需的所有文件和文件夹 这台机器或另一台机器。只需将整个文件夹复制到另一台机器上,然后 运行文件。

                      【讨论】:

                        【解决方案25】:

                        从 Anaconda3\Library\plugins 复制平台并将其放入 Anaconda3. 对于 env 将平台放在特定的 env\ 文件夹中

                        【讨论】:

                          猜你喜欢
                          • 2019-04-14
                          • 1970-01-01
                          • 2021-07-14
                          • 2016-01-08
                          • 2017-03-01
                          • 2016-11-16
                          • 2015-08-06
                          • 2019-12-13
                          • 1970-01-01
                          相关资源
                          最近更新 更多