【问题标题】:PySide2 Cannot Find Qt_5.15PySide2 找不到 Qt_5.15
【发布时间】:2020-09-19 22:21:41
【问题描述】:

本周五,我的 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 &amp;&amp; python3 -m pip install PySide2。但即便如此,我又遇到了同样的问题。至少这里我明白了,因为我使用存储库中的版本安装了Qt 5.9.5。

有人可以帮助我运行导入,以便我可以像上周中期那样再次运行 PySide2 绑定吗?提前谢谢你。

附录 我也试过用内容创建一个/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf 文件

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

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

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

【问题讨论】:

  • 据我了解,您想使用 PySide2 5.15 并且遇到问题,您是否尝试过使用 PySide2 5.14.2?
  • 好点。 python3 -m pip uninstall PySide2 &amp;&amp; python3 -m pip install PySide2==5.14.2 将错误更改为 ImportError: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version 'Qt_5.14' not found (required by /usr/local/lib/python3.6/dist-packages/PySide2/libpyside2.abi3.so.5.14)。好像 Qt 没有正确注册。我还注意到,在我更复杂的图像中,我似乎缺少qtchooser。不知道为什么。知道除了 PATH 之外我还应该尝试设置哪些环境变量?
  • 你试过 ubuntu 镜像(没有 nvidia)吗?注意:不要安装系统Qt会带来冲突,PySide2已经自带Qt
  • 不,但我的问题是我需要 GPU 加速和 CUDA。因此,如果可能的话,我想坚持使用nvidia/opengl:1.0-glvnd-runtime-ubuntu18.04。我可以尝试纯 ubuntu 进行比较,但这只是测试。
  • 我的想法是知道是谁导致了错误,所以我想降低复杂性,如果它在没有 nvidia 的 docker 中工作,那么问题是由该 docker 的某些组件引起的。你为什么不使用virtualenv?这样您就可以消除与操作系统库的冲突。

标签: python linux docker qt pyside2


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我遇到了类似的问题 - 即使我的 venv 包含正确的 5.9.15 版本,pyside2 仍然从 /usr/lib/x86_64-linux-gnu/libQt5Core.so 加载 5.9.5 版本的 libQt5Core。我在 venv/bin/activate 中添加了 LD_LIBRARY_PATH 设置,我的世界突然变得更好了: 紧接着

    # unset PYTHONHOME if set
    

    部分,我添加了

    if [ -n "{LD_LIBRARY_PATH:-}" ]; then
        LDLIB_PATHSEP=""
    else
        LDLIB_PATHSEP=':'
    fi
    OLD_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
    export LD_LIBRARY_PATH="$VIRTUAL_ENV/lib/python3.6/site-packages/PySide2/Qt/lib/${LDLIB_PATHSEP}${LD_LIBRARY_PATH}"
    

    在 deactivate() 定义中,我还添加了代码来恢复任何预激活的 LD_LIBRARY_PATH:

    if [ -n "{OLD_LD_LIBRARY_PATH:-}" ]; then
        unset LD_LIBRARY_PATH
    else
        LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH}
    fi
    

    附: Ubuntu 18.04;蟒蛇3.6; venv 设置为:

    $ python3 -m venv ~/venv_pyside2
    $ ~/venv_pyside2/bin/python3 -m pip install --upgrade pip
    

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 2019-04-12
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      相关资源
      最近更新 更多