python - PySide2 找不到 Qt_5.15

标签 python linux docker qt pyside2

本周五,我的 PySide2 安装在 Ubuntu 18.04 容器(基于 nvidia/opengl:1.0-glvnd-runtime-ubuntu18.04)内停止工作。我现在收到以下错误:

python3 -c "from PySide2 import QtWidgets"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.15' not found (required by /usr/local/lib/python3.6/dist-packages/PySide2/libpyside2.abi3.so.5.15)

我尝试通过手动编译Qt

RUN apt-get update && \
    apt-get -y install -y \
    clang \
    libfontconfig1-dev \
    libfreetype6-dev \
    libx11-dev \
    libxext-dev \
    libxfixes-dev \
    libxi-dev \
    libxrender-dev \
    libxcb1-dev \
    libx11-xcb-dev \
    libxcb-glx0-dev \
    libxkbcommon-x11-dev \
    libxcb-keysyms1-dev \
    libxcb-image0-dev \
    libxcb-shm0-dev \
    libxcb-icccm4-dev \
    libxcb-sync0-dev \
    libxcb-xfixes0-dev \
    libxcb-shape0-dev \
    libxcb-randr0-dev \
    libxcb-render-util0-dev && \
    rm -rf /var/lib/apt/lists/*

RUN cd /tmp && wget http://download.qt.io/official_releases/qt/5.15/5.15.0/single/qt-everywhere-src-5.15.0.tar.xz && \
    tar -xf qt-everywhere-src-5.15.0.tar.xz && tar -xf qt-everywhere-src-5.15.0.tar.xz && \
    rm qt-everywhere-src-5.15.0.tar.xz && cd qt-everywhere-src-5.15.0 && export QT5PREFIX=/opt/qt5 && \
    ./configure -prefix $QT5PREFIX \
            -sysconfdir /etc/xdg \
            -confirm-license \
            -opensource \
            -system-harfbuzz \
            -nomake examples \
            -no-rpath \
            -skip qtwebengine && \
    make && make install

(并将其添加到 PATH)但这没有帮助(相同的错误)。

我也尝试使用默认包,即 apt install qt5-default python3-pyside python3-pip,但是尽管安装了 PySide,但找不到 PySide2 模块,所以我通过 pip 安装了它好吧,即 python3 -m pip install -U pip && python3 -m pip install PySide2 。但即便如此,我又遇到了同样的问题。至少在这里我明白了,因为我使用存储库中的版本安装了Qt 5.9.5。

有人可以帮助我运行导入,以便我可以像上周中旬那样再次运行 PySide2 绑定(bind)吗?预先感谢您。

附录 我还尝试创建一个包含以下内容的 /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf 文件

/opt/qt5/bin
/opt/qt5/lib

指向我手动编译的Qt,但无济于事。

更新:我认为这与我在编译 Qt 之前编译 OMPL 有关,Qt 安装了自己的 Qt 版本。因此 PySide2 选择了错误的版本。但是,我无法将其指向正确的 Qt 版本。除了我已经提到的之外,有人可以回顾一下我需要为此设置哪些变量吗?预先感谢您。

最佳答案

将 pyside2 导入移至其他导入的顶部:

from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
# other imports

关于python - PySide2 找不到 Qt_5.15,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62135234/

相关文章:

c - 如何处理 execvp 中的错误?

c++ - 鼠标按键模拟——右键和上下文菜单问题

arrays - 如何使用 plotutils 直接绘制数组

docker - Kubernetes pod 上的 ImagePullBackOff 状态是什么意思?

docker - 使用环境变量从另一个Docker容器访问本地SQS服务

python - 如何检测 Pandas 时间序列图中的突然变化

python - 按列表顺序从列表中选择 Pandas 数据框的行

docker - 不再支持 Google Cloud Run UDP 端口?

python - 如何在 python 列表中立即释放使用的内存?

python - Pandas json_normalize 无法在 Python 中处理大型 JSON 文件