【发布时间】: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 && 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 && 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