【问题标题】:After installing pyqt5==5.14.0, error shows as Could not load the Qt platform plugin "xcb" in "" even though it was found安装pyqt5==5.14.0后,错误显示为Could not load the Qt platform plugin "xcb" in "",即使找到了
【发布时间】:2020-11-05 10:45:09
【问题描述】:

我不小心安装了 pyqt5==5.14.0 用于测试 pandasGUI,如我的 ubuntu 系统中的教程中所示。但是,现在我无法使用 matplotlib 绘制任何图形,因为它显示错误为

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Aborted (core dumped)"

我看到一些解决方案建议查看 /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so 文件。但是在我系统的这个路径中是看不到这样的文件或者qt5目录的。

我只需要恢复正常的 matplotlib 功能。

【问题讨论】:

    标签: python matplotlib plugins pyqt5 xcb


    【解决方案1】:

    您需要先获取一些调试信息才能指向正确的方向。为此,您使用 qt 调试集运行命令:

    QT_DEBUG_PLUGINS=1 picard
    

    这将(尝试)在控制台/终端中运行带有调试输出的我的 picard 二进制文件,这将为您提供类似于以下内容的输出:

    loaded library "crypto"
    loaded library "ssl"
    QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib64/kde4/plugins/platforms" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/kde4/plugins/platforms" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms" ...
    QFactoryLoader::QFactoryLoader() looking at "/home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqeglfs.so"
    Found metadata in lib /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqeglfs.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "eglfs"
            ]
        },
        "archreq": 0,
        "className": "QEglFSIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("eglfs")
    QFactoryLoader::QFactoryLoader() looking at "/home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqlinuxfb.so"
    Found metadata in lib /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqlinuxfb.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "linuxfb"
            ]
        },
        "archreq": 0,
        "className": "QLinuxFbIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("linuxfb")
    QFactoryLoader::QFactoryLoader() looking at "/home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqminimal.so"
    Found metadata in lib /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqminimal.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "minimal"
            ]
        },
        "archreq": 0,
        "className": "QMinimalIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    ...
    
    Got keys from plugin meta data ("xcb")
    QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforms" ...
    Cannot load library /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)
    QLibraryPrivate::loadPlugin failed on "/home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so" : "Cannot load library /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)"
    qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    
    Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
    
    

    这是表明系统库文件丢失的关键部分:

    Cannot load library /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)
    
    QLibraryPrivate::loadPlugin failed on "/home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so" : "Cannot load library /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory)"
    

    正如我们所见,正在加载的库 python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so 本身正在尝试加载缺少的链接库 libxkbcommon-x11.so.0,如“没有此类文件...”错误所示。

    您可以使用ldd 列出库链接来验证这一点,例如:

    ldd /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so
        linux-vdso.so.1 =>  (0x00007ffc57340000)
        libQt5XcbQpa.so.5 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libQt5XcbQpa.so.5 (0x00007f2ef6b4e000)
        libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007f2ef690c000)
        libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007f2ef664d000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f2ef6437000)
        libQt5Gui.so.5 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libQt5Gui.so.5 (0x00007f2ef5b06000)
        libQt5DBus.so.5 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libQt5DBus.so.5 (0x00007f2ef587a000)
        libQt5Core.so.5 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libQt5Core.so.5 (0x00007f2ef5084000)
        libGL.so.1 => /lib64/libGL.so.1 (0x00007f2ef4df8000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2ef4bdc000)
        libX11-xcb.so.1 => /lib64/libX11-xcb.so.1 (0x00007f2ef49da000)
        libxcb-icccm.so.4 => /lib64/libxcb-icccm.so.4 (0x00007f2ef47d5000)
        libxcb-image.so.0 => /lib64/libxcb-image.so.0 (0x00007f2ef45d0000)
        libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x00007f2ef43cc000)
        libxcb-util.so.1 => /lib64/libxcb-util.so.1 (0x00007f2ef41c6000)
        libxcb-keysyms.so.1 => /lib64/libxcb-keysyms.so.1 (0x00007f2ef3fc3000)
        libxcb-randr.so.0 => /lib64/libxcb-randr.so.0 (0x00007f2ef3db3000)
        libxcb-render-util.so.0 => /lib64/libxcb-render-util.so.0 (0x00007f2ef3baf000)
        libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x00007f2ef39a1000)
        libxcb-shape.so.0 => /lib64/libxcb-shape.so.0 (0x00007f2ef379d000)
        libxcb-sync.so.1 => /lib64/libxcb-sync.so.1 (0x00007f2ef3596000)
        libxcb-xfixes.so.0 => /lib64/libxcb-xfixes.so.0 (0x00007f2ef338e000)
        libxcb-xinerama.so.0 => /lib64/libxcb-xinerama.so.0 (0x00007f2ef318b000)
        libxcb-xkb.so.1 => /lib64/libxcb-xkb.so.1 (0x00007f2ef2f6f000)
        libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f2ef2d47000)
        libXext.so.6 => /lib64/libXext.so.6 (0x00007f2ef2b35000)
        libX11.so.6 => /lib64/libX11.so.6 (0x00007f2ef27f7000)
        libxkbcommon-x11.so.0 => not found
        libxkbcommon.so.0 => /lib64/libxkbcommon.so.0 (0x00007f2ef25b7000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f2ef23b3000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f2ef20ab000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f2ef1da9000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f2ef1b93000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f2ef17c5000)
        libxkbcommon-x11.so.0 => not found
        libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f2ef15c3000)
        libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f2ef12ad000)
        libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f2ef1083000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f2ef0e7e000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f2ef0c6e000)
        libpng15.so.15 => /lib64/libpng15.so.15 (0x00007f2ef0a43000)
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007f2ef07f3000)
        libicui18n.so.56 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libicui18n.so.56 (0x00007f2ef035a000)
        libicuuc.so.56 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libicuuc.so.56 (0x00007f2eeffa2000)
        libicudata.so.56 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libicudata.so.56 (0x00007f2eee5bf000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f2ef70ab000)
        libGLX.so.0 => /lib64/libGLX.so.0 (0x00007f2eee38d000)
        libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007f2eee0d7000)
        libXau.so.6 => /lib64/libXau.so.6 (0x00007f2eeded3000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f2eedc71000)
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f2eeda40000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007f2eed83b000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f2eed633000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2eed40c000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f2eed1e6000)
        liblz4.so.1 => /lib64/liblz4.so.1 (0x00007f2eecfd7000)
        libgcrypt.so.11 => /lib64/libgcrypt.so.11 (0x00007f2eecd56000)
        libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f2eecb51000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f2eec937000)
        libdw.so.1 => /lib64/libdw.so.1 (0x00007f2eec6e6000)
        libattr.so.1 => /lib64/libattr.so.1 (0x00007f2eec4e1000)
        libelf.so.1 => /lib64/libelf.so.1 (0x00007f2eec2c9000)
    

    或者更简洁的ldd /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so | grep -i "not found" 然后你可以看到你在调试输出中得到的错误实际上是由缺少库依赖引起的——与 QT 没有任何直接关系。

    在此示例中,我使用的是 CentOS,因此我可以使用 yum 搜索提供缺失库的内容 yum provides libxkbcommon-x11yum search libxkb 以查看任何可能匹配的包。

    安装缺少的包后,您可以使用 ldd 看到所有库依赖项都已满足:

    ldd /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/libqxcb.so
        linux-vdso.so.1 =>  (0x00007ffd6ea36000)
        libQt5XcbQpa.so.5 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libQt5XcbQpa.so.5 (0x00007f3c32187000)
        libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007f3c31f45000)
        libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007f3c31c86000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f3c31a70000)
        libQt5Gui.so.5 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libQt5Gui.so.5 (0x00007f3c3113f000)
        libQt5DBus.so.5 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libQt5DBus.so.5 (0x00007f3c30eb3000)
        libQt5Core.so.5 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libQt5Core.so.5 (0x00007f3c306bd000)
        libGL.so.1 => /lib64/libGL.so.1 (0x00007f3c30431000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3c30215000)
        libX11-xcb.so.1 => /lib64/libX11-xcb.so.1 (0x00007f3c30013000)
        libxcb-icccm.so.4 => /lib64/libxcb-icccm.so.4 (0x00007f3c2fe0e000)
        libxcb-image.so.0 => /lib64/libxcb-image.so.0 (0x00007f3c2fc09000)
        libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x00007f3c2fa05000)
        libxcb-util.so.1 => /lib64/libxcb-util.so.1 (0x00007f3c2f7ff000)
        libxcb-keysyms.so.1 => /lib64/libxcb-keysyms.so.1 (0x00007f3c2f5fc000)
        libxcb-randr.so.0 => /lib64/libxcb-randr.so.0 (0x00007f3c2f3ec000)
        libxcb-render-util.so.0 => /lib64/libxcb-render-util.so.0 (0x00007f3c2f1e8000)
        libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x00007f3c2efda000)
        libxcb-shape.so.0 => /lib64/libxcb-shape.so.0 (0x00007f3c2edd6000)
        libxcb-sync.so.1 => /lib64/libxcb-sync.so.1 (0x00007f3c2ebcf000)
        libxcb-xfixes.so.0 => /lib64/libxcb-xfixes.so.0 (0x00007f3c2e9c7000)
        libxcb-xinerama.so.0 => /lib64/libxcb-xinerama.so.0 (0x00007f3c2e7c4000)
        libxcb-xkb.so.1 => /lib64/libxcb-xkb.so.1 (0x00007f3c2e5a8000)
        libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f3c2e380000)
        libXext.so.6 => /lib64/libXext.so.6 (0x00007f3c2e16e000)
        libX11.so.6 => /lib64/libX11.so.6 (0x00007f3c2de30000)
        libxkbcommon-x11.so.0 => /lib64/libxkbcommon-x11.so.0 (0x00007f3c2dc28000)
        libxkbcommon.so.0 => /lib64/libxkbcommon.so.0 (0x00007f3c2d9e8000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3c2d7e4000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f3c2d4dc000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f3c2d1da000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3c2cfc4000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f3c2cbf6000)
        libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f3c2c9f4000)
        libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f3c2c6de000)
        libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f3c2c4b4000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f3c2c2af000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f3c2c09f000)
        libpng15.so.15 => /lib64/libpng15.so.15 (0x00007f3c2be74000)
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007f3c2bc24000)
        libicui18n.so.56 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libicui18n.so.56 (0x00007f3c2b78b000)
        libicuuc.so.56 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libicuuc.so.56 (0x00007f3c2b3d3000)
        libicudata.so.56 => /home/nas/.local/lib/python3.6/site-packages/PyQt5/Qt5/plugins/platforms/../../lib/libicudata.so.56 (0x00007f3c299f0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3c326e4000)
        libGLX.so.0 => /lib64/libGLX.so.0 (0x00007f3c297be000)
        libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007f3c29508000)
        libXau.so.6 => /lib64/libXau.so.6 (0x00007f3c29304000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f3c290a2000)
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f3c28e71000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007f3c28c6c000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f3c28a64000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f3c2883d000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f3c28617000)
        liblz4.so.1 => /lib64/liblz4.so.1 (0x00007f3c28408000)
        libgcrypt.so.11 => /lib64/libgcrypt.so.11 (0x00007f3c28187000)
        libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f3c27f82000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f3c27d68000)
        libdw.so.1 => /lib64/libdw.so.1 (0x00007f3c27b17000)
        libattr.so.1 => /lib64/libattr.so.1 (0x00007f3c27912000)
        libelf.so.1 => /lib64/libelf.so.1 (0x00007f3c276fa000)
    

    这是一个非常具体的例子,它试图通过 X11 转发通过 ssh 使用新构建的源 MusicBrainz Picard,考虑到该包依赖于 QT 和 python,它们都在远程运行并且接口转发到我的本地desktop 为应用程序提供了许多有趣的破解方式。

    因此,操作理论和故障排除策略是,您可以使用 QT 调试工具来缩小问题所在,并且很可能是系统的包管理器可以提供或包含的一个(或多个)缺失库某些情况下用于 python(或其他语言特定的包管理器)。

    我希望这可以帮助遇到类似问题的其他人 - 因为我最初认为这是一个 QT5 问题,然后是一个 Python 问题,然后是我尝试运行的软件的一个错误,当它缺少系统库时,我不会怀疑的。

    编辑:我刚刚看到这篇文章是一个建议,它与我在这里的建议几乎相同,但包含更多的上下文,所以我将它链接到这里 https://stackoverflow.com/a/39725335/1112676

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2019-02-14
      相关资源
      最近更新 更多