未找到 PyQt5 的共享库:libxcb-xinerama.so.0 => 未找到

未找到 PyQt5 的共享库:libxcb-xinerama.so.0 => 未找到

我正在为我的开发设置一个 python3 虚拟环境,因此我远离包管理器 apt-install

$ python3 -m venv . # create my environment in my working directory

然后我激活了 venv 并安装了 pyqt5

$ source bin/activate
$ pip install PyQt5

我收到安装成功的通知,并且 PyQt5 和 PyQt5-Sip 出现在我的 pip 列表中

当我构建示例应用程序时收到错误:

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/path/to/venv/lib/python3.8/site-packages/PyQt5/Qt/plugins" 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)

我导出了环境变量以进行调试

export QT_DEBUG_PLUGINS=1

我尝试再次运行我的应用程序,以下是我在链接器中得到的具体错误

QFactoryLoader::QFactoryLoader() looking at "/path/to/venv/lib/python3.8/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so"
Found metadata in lib /path/to/venv/lib/python3.8/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "archreq": 0,
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforms" ...
Cannot load library /path/to/venv/lib/python3.8/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so: (libxcb-xinerama.so.0: cannot open shared object file: No such file or directory)

这里重要的错误是

libxcb-xinerama.so.0: cannot open shared object file: No such file or directory

所以我深入研究了一下。我决定使用 ldd 命令来解析共享库依赖关系。

$ ldd /path/to/venv/lib/python3.8/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so

瞧瞧:

libxcb-xinerama.so.0 => not found
libxcb-xinerama.so.0 => not found

libqxcb 共享库依赖项列表中缺少这些共享库。我希望 pip 的安装会包含这些,但事实并非如此。我没有在任何地方找到解决此问题的方法,而且我找到的少量来源提到使用 apt-install 来解决这些问题。我不想改变我的系统,我更喜欢保持沙盒化。

我该怎么做才能修复这个依赖关系?

答案1

当我在 Ubuntu 20.04 上安装pyqt5并使用(也会创建一个)时,发生了完全相同的问题。matplotlibpipenvvenv

在我的系统上,通过安装缺失的,可以轻松解决这个问题libxcb-xinerama0,使用apt

sudo apt install libxcb-xinerama0

答案2

我在 Ubuntu 18.04.3 上遇到了同样的问题。以下是我解决这个问题的方法。

使用 pip3 卸载 PyQt

pip3 uninstall pyqt5

并通过 apt-get 安装

sudo apt-get install python3-pyqt5

答案3

我也没有用 pip 找到它们。我认为你只能从源代码编译它(https://xorg.freedesktop.org/archive/individual/lib/libxcb-1.14.tar.xz)并链接到它,或者安装libxcb-xinerama0

相关内容