安装pyqt5==5.14.0后,错误显示为无法在“”中加载Qt平台插件“xcb”,即使找到它

2024-04-27 00:34:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我无意中安装了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恢复正常功能


Tags: 文件theapplicationmatplotlib系统pluginsqtplugin
1条回答
网友
1楼 · 发布于 2024-04-27 00:34:20

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

QT_DEBUG_PLUGINS=1 picard

这将(尝试)在控制台/终端中运行带有调试输出的my picard binary,其输出类似于:

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)

这是一个非常具体的例子,尝试使用新构建的源代码MusicBrainz Picard over ssh和X11转发,考虑到包依赖于QT和python,它们都是远程运行的,转发到本地桌面的接口为应用程序提供了许多有趣的中断方式

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

我希望这能帮助其他人解决类似的问题——因为我最初认为这是一个QT5问题,然后是Python问题,然后是我试图运行的软件的一个bug,当时它是一个丢失的系统库,我不会怀疑

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

相关问题 更多 >