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



我无意中安装了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恢复正常工作。

您需要首先获得一些调试信息,以指向正确的方向。为此,您使用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 Forwarding在ssh上使用从源代码MusicBrainz-Picard,考虑到该包依赖于QT AND python,而QT AND python都是远程运行的,并且转发到我的本地桌面的接口为应用程序的中断提供了许多有趣的方式

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

我希望这能帮助其他有类似问题的人——因为我最初认为这是一个QT5问题,然后是Python问题,然后我试图运行的软件出现了错误,而我不会怀疑它是一个缺失的系统库。

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

相关内容