pytrip / pytripgui

Official platform-independent PyTRiP graphical user interface
https://pytrip.github.io/pytripgui/
GNU General Public License v3.0
11 stars 4 forks source link

Installation fails on Ubuntu when pyqt5 is installed using apt #507

Open grzanka opened 3 years ago

grzanka commented 3 years ago

Step to reproduce:

  1. Start docker container with Ubuntu 21.04 and install python3 with pip
    (base) root@debian8:~# docker run -it ubuntu:hirsute /bin/bash
    root@59bd2f2955d8:/# apt update 
    Get:1 http://archive.ubuntu.com/ubuntu hirsute InRelease [269 kB]
    (...)
    Get:17 http://security.ubuntu.com/ubuntu hirsute-security/restricted amd64 Packages [228 kB]
    Fetched 21.4 MB in 3s (8088 kB/s)                        
    (...)
    The following additional packages will be installed:
    binutils binutils-common binutils-x86-64-linux-gnu build-essential bzip2
    ca-certificates cpp cpp-10 dirmngr dpkg-dev fakeroot fontconfig-config
    fonts-dejavu-core g++ g++-10 gcc gcc-10 gcc-10-base gnupg gnupg-l10n
    gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
    javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl
    libalgorithm-merge-perl libasan6 libasn1-8-heimdal libassuan0 libatomic1
    libbinutils libbrotli1 libbsd0 libc-dev-bin libc-devtools libc6-dev libcc1-0
    libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libdpkg-perl libexpat1
    libexpat1-dev libfakeroot libfile-fcntllock-perl libfontconfig1 libfreetype6
    libgcc-10-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libgssapi3-heimdal
    libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal
    libhx509-5-heimdal libisl23 libitm1 libjbig0 libjpeg-turbo8 libjpeg8
    libjs-jquery libjs-sphinxdoc libjs-underscore libkrb5-26-heimdal libksba8
    libldap-2.4-2 libldap-common liblocale-gettext-perl liblsan0 libmd0 libmpc3
    libmpdec3 libmpfr6 libnpth0 libnsl-dev libperl5.32 libpng16-16
    libpython3-dev libpython3-stdlib libpython3.9 libpython3.9-dev
    libpython3.9-minimal libpython3.9-stdlib libquadmath0 libreadline8
    libroken18-heimdal libsasl2-2 libsasl2-modules libsasl2-modules-db
    libsqlite3-0 libstdc++-10-dev libtiff5 libtirpc-dev libtsan0 libubsan1
    libwebp6 libwind0-heimdal libx11-6 libx11-data libxau6 libxcb1 libxdmcp6
    libxpm4 linux-libc-dev lto-disabled-list make manpages manpages-dev
    media-types netbase openssl patch perl perl-modules-5.32 pinentry-curses
    python-pip-whl python3 python3-dev python3-distutils python3-lib2to3
    python3-minimal python3-pkg-resources python3-setuptools python3-wheel
    python3.9 python3.9-dev python3.9-minimal readline-common rpcsvc-proto
    tzdata ucf xz-utils zlib1g-dev
    (...)
    The following NEW packages will be installed:
    binutils binutils-common binutils-x86-64-linux-gnu build-essential bzip2
    ca-certificates cpp cpp-10 dirmngr dpkg-dev fakeroot fontconfig-config
    fonts-dejavu-core g++ g++-10 gcc gcc-10 gcc-10-base gnupg gnupg-l10n
    gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm
    javascript-common libalgorithm-diff-perl libalgorithm-diff-xs-perl
    libalgorithm-merge-perl libasan6 libasn1-8-heimdal libassuan0 libatomic1
    libbinutils libbrotli1 libbsd0 libc-dev-bin libc-devtools libc6-dev libcc1-0
    libcrypt-dev libctf-nobfd0 libctf0 libdeflate0 libdpkg-perl libexpat1
    libexpat1-dev libfakeroot libfile-fcntllock-perl libfontconfig1 libfreetype6
    libgcc-10-dev libgd3 libgdbm-compat4 libgdbm6 libgomp1 libgssapi3-heimdal
    libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal
    libhx509-5-heimdal libisl23 libitm1 libjbig0 libjpeg-turbo8 libjpeg8
    libjs-jquery libjs-sphinxdoc libjs-underscore libkrb5-26-heimdal libksba8
    libldap-2.4-2 libldap-common liblocale-gettext-perl liblsan0 libmd0 libmpc3
    libmpdec3 libmpfr6 libnpth0 libnsl-dev libperl5.32 libpng16-16
    libpython3-dev libpython3-stdlib libpython3.9 libpython3.9-dev
    libpython3.9-minimal libpython3.9-stdlib libquadmath0 libreadline8
    libroken18-heimdal libsasl2-2 libsasl2-modules libsasl2-modules-db
    libsqlite3-0 libstdc++-10-dev libtiff5 libtirpc-dev libtsan0 libubsan1
    libwebp6 libwind0-heimdal libx11-6 libx11-data libxau6 libxcb1 libxdmcp6
    libxpm4 linux-libc-dev lto-disabled-list make manpages manpages-dev
    media-types netbase openssl patch perl perl-modules-5.32 pinentry-curses
    python-pip-whl python3 python3-dev python3-distutils python3-lib2to3
    python3-minimal python3-pip python3-pkg-resources python3-setuptools
    python3-wheel python3.9 python3.9-dev python3.9-minimal readline-common
    rpcsvc-proto tzdata ucf xz-utils zlib1g-dev
    0 upgraded, 142 newly installed, 0 to remove and 0 not upgraded.

Install pyqt5 using apt get. Not that this package is usually installed via pip:

root@59bd2f2955d8:/# apt install python3-pyqt5
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  adwaita-icon-theme at-spi2-core dbus dbus-user-session
  dconf-gsettings-backend dconf-service dmsetup fontconfig gir1.2-glib-2.0
  glib-networking glib-networking-common glib-networking-services
  gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme
  humanity-icon-theme libapparmor1 libargon2-1 libatk-bridge2.0-0 libatk1.0-0
  libatk1.0-data libatspi2.0-0 libavahi-client3 libavahi-common-data
  libavahi-common3 libcairo-gobject2 libcairo2 libcolord2 libcryptsetup12
  libcups2 libdatrie1 libdbus-1-3 libdconf1 libdevmapper1.02.1
  libdouble-conversion3 libdrm-amdgpu1 libdrm-common libdrm-intel1
  libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libegl-mesa0 libegl1 libelf1
  libepoxy0 libevdev2 libfribidi0 libgbm1 libgdk-pixbuf-2.0-0
  libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgirepository-1.0-1 libgl1
  libgl1-mesa-dri libglapi-mesa libglib2.0-0 libglib2.0-data libglvnd0
  libglx-mesa0 libglx0 libgraphite2-3 libgtk-3-0 libgtk-3-bin libgtk-3-common
  libgudev-1.0-0 libharfbuzz0b libice6 libicu67 libinput-bin libinput10
  libip4tc2 libjson-c5 libjson-glib-1.0-0 libjson-glib-1.0-common libkmod2
  liblcms2-2 libllvm12 libmd4c0 libmtdev1 libnss-systemd libpam-systemd
  libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0
  libpcre2-16-0 libpixman-1-0 libproxy1v5 libpsl5 libqt5core5a libqt5dbus5
  libqt5designer5 libqt5gui5 libqt5help5 libqt5network5 libqt5printsupport5
  libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5widgets5
  libqt5xml5 librest-0.7-0 librsvg2-2 librsvg2-common libsensors-config
  libsensors5 libsm6 libsoup-gnome2.4-1 libsoup2.4-1 libthai-data libthai0
  libvulkan1 libwacom-bin libwacom-common libwacom2 libwayland-client0
  libwayland-cursor0 libwayland-egl1 libwayland-server0 libx11-xcb1
  libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-icccm4 libxcb-image0
  libxcb-keysyms1 libxcb-present0 libxcb-randr0 libxcb-render-util0
  libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1
  libxcb-xfixes0 libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1 libxcomposite1
  libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxinerama1
  libxkbcommon-x11-0 libxkbcommon0 libxml2 libxrandr2 libxrender1
  libxshmfence1 libxtst6 libxxf86vm1 mesa-vulkan-drivers networkd-dispatcher
  publicsuffix python3-dbus python3-gi python3-pyqt5.sip qt5-gtk-platformtheme
  qttranslations5-l10n shared-mime-info systemd systemd-sysv systemd-timesyncd
  ubuntu-mono x11-common xdg-user-dirs xkb-data
Suggested packages:
  colord cups-common gvfs liblcms2-utils pciutils qt5-image-formats-plugins
  qtwayland5 librsvg2-bin lm-sensors iw | wireless-tools python-dbus-doc
  python3-dbus-dbg python3-pyqt5-dbg systemd-container policykit-1
The following NEW packages will be installed:
  adwaita-icon-theme at-spi2-core dbus dbus-user-session
  dconf-gsettings-backend dconf-service dmsetup fontconfig gir1.2-glib-2.0
  glib-networking glib-networking-common glib-networking-services
  gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme
  humanity-icon-theme libapparmor1 libargon2-1 libatk-bridge2.0-0 libatk1.0-0
  libatk1.0-data libatspi2.0-0 libavahi-client3 libavahi-common-data
  libavahi-common3 libcairo-gobject2 libcairo2 libcolord2 libcryptsetup12
  libcups2 libdatrie1 libdbus-1-3 libdconf1 libdevmapper1.02.1
  libdouble-conversion3 libdrm-amdgpu1 libdrm-common libdrm-intel1
  libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libegl-mesa0 libegl1 libelf1
  libepoxy0 libevdev2 libfribidi0 libgbm1 libgdk-pixbuf-2.0-0
  libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgirepository-1.0-1 libgl1
  libgl1-mesa-dri libglapi-mesa libglib2.0-0 libglib2.0-data libglvnd0
  libglx-mesa0 libglx0 libgraphite2-3 libgtk-3-0 libgtk-3-bin libgtk-3-common
  libgudev-1.0-0 libharfbuzz0b libice6 libicu67 libinput-bin libinput10
  libip4tc2 libjson-c5 libjson-glib-1.0-0 libjson-glib-1.0-common libkmod2
  liblcms2-2 libllvm12 libmd4c0 libmtdev1 libnss-systemd libpam-systemd
  libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0
  libpcre2-16-0 libpixman-1-0 libproxy1v5 libpsl5 libqt5core5a libqt5dbus5
  libqt5designer5 libqt5gui5 libqt5help5 libqt5network5 libqt5printsupport5
  libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5widgets5
  libqt5xml5 librest-0.7-0 librsvg2-2 librsvg2-common libsensors-config
  libsensors5 libsm6 libsoup-gnome2.4-1 libsoup2.4-1 libthai-data libthai0
  libvulkan1 libwacom-bin libwacom-common libwacom2 libwayland-client0
  libwayland-cursor0 libwayland-egl1 libwayland-server0 libx11-xcb1
  libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-icccm4 libxcb-image0
  libxcb-keysyms1 libxcb-present0 libxcb-randr0 libxcb-render-util0
  libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1
  libxcb-xfixes0 libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1 libxcomposite1
  libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxinerama1
  libxkbcommon-x11-0 libxkbcommon0 libxml2 libxrandr2 libxrender1
  libxshmfence1 libxtst6 libxxf86vm1 mesa-vulkan-drivers networkd-dispatcher
  publicsuffix python3-dbus python3-gi python3-pyqt5 python3-pyqt5.sip
  qt5-gtk-platformtheme qttranslations5-l10n shared-mime-info systemd
  systemd-sysv systemd-timesyncd ubuntu-mono x11-common xdg-user-dirs xkb-data
0 upgraded, 172 newly installed, 0 to remove and 0 not upgraded.
Need to get 83.6 MB of archives.
(...)

Install pytripgui using pip. Note that it will install pyqt5 as well:

root@59bd2f2955d8:/# pip3 install pytrip98gui 
Collecting pytrip98gui
  Downloading pytrip98gui-1.3.1-py3-none-any.whl (621 kB)
     |████████████████████████████████| 621 kB 1.9 MB/s 
Collecting anytree~=2.8
  Downloading anytree-2.8.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 179 kB/s 
Collecting pytrip98~=3.4
  Downloading pytrip98-3.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (194 kB)
     |████████████████████████████████| 194 kB 34.4 MB/s 
Collecting Events~=0.4
  Downloading Events-0.4.tar.gz (5.6 kB)
Requirement already satisfied: PyQt5>=5.15 in /usr/lib/python3/dist-packages (from pytrip98gui) (5.15.4)
Collecting PyQtChart>=5.15
  Downloading PyQtChart-5.15.4-cp36.cp37.cp38.cp39-abi3-manylinux2014_x86_64.whl (304 kB)
     |████████████████████████████████| 304 kB 29.6 MB/s 
Collecting paramiko~=2.7
  Downloading paramiko-2.7.2-py2.py3-none-any.whl (206 kB)
     |████████████████████████████████| 206 kB 31.2 MB/s 
Collecting six>=1.9.0
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting pynacl>=1.0.1
  Downloading PyNaCl-1.4.0-cp35-abi3-manylinux1_x86_64.whl (961 kB)
     |████████████████████████████████| 961 kB 33.5 MB/s 
Collecting cryptography>=2.5
  Downloading cryptography-3.4.8-cp36-abi3-manylinux_2_24_x86_64.whl (3.0 MB)
     |████████████████████████████████| 3.0 MB 25.1 MB/s 
Collecting bcrypt>=3.1.3
  Downloading bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl (63 kB)
     |████████████████████████████████| 63 kB 733 kB/s 
Collecting cffi>=1.1
  Downloading cffi-1.14.6-cp39-cp39-manylinux1_x86_64.whl (405 kB)
     |████████████████████████████████| 405 kB 33.2 MB/s 
Collecting pycparser
  Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB)
     |████████████████████████████████| 112 kB 36.9 MB/s 
Requirement already satisfied: PyQt5-sip<13,>=12.8 in /usr/lib/python3/dist-packages (from PyQt5>=5.15->pytrip98gui) (12.8.1)
Collecting PyQtChart-Qt5>=5.15
  Downloading PyQtChart_Qt5-5.15.2-py3-none-manylinux2014_x86_64.whl (925 kB)
     |████████████████████████████████| 925 kB 35.3 MB/s 
Collecting numpy>=1.20.0
  Downloading numpy-1.21.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.8 MB)
     |████████████████████████████████| 15.8 MB 13.7 MB/s 
Collecting matplotlib
  Downloading matplotlib-3.4.3-cp39-cp39-manylinux1_x86_64.whl (10.3 MB)
     |████████████████████████████████| 10.3 MB 19.0 MB/s 
Collecting pydicom
  Downloading pydicom-2.2.1-py3-none-any.whl (2.0 MB)
     |████████████████████████████████| 2.0 MB 33.5 MB/s 
Collecting cycler>=0.10
  Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
Collecting pyparsing>=2.2.1
  Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
     |████████████████████████████████| 67 kB 2.0 MB/s 
Collecting kiwisolver>=1.0.1
  Downloading kiwisolver-1.3.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.6 MB)
     |████████████████████████████████| 1.6 MB 31.9 MB/s 
Collecting pillow>=6.2.0
  Downloading Pillow-8.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)
     |████████████████████████████████| 3.0 MB 26.9 MB/s 
Collecting python-dateutil>=2.7
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     |████████████████████████████████| 247 kB 36.7 MB/s 
Building wheels for collected packages: Events
  Building wheel for Events (setup.py) ... done
  Created wheel for Events: filename=Events-0.4-py3-none-any.whl size=6261 sha256=31eaa5fab93f489c387a141b0590a0bdd7ce58f00386437a9438321c19e32032
  Stored in directory: /root/.cache/pip/wheels/63/79/b9/9470724b5fdb7efc3171a0f97f98469e898ceb8f5ae28e89b1
Successfully built Events
Installing collected packages: six, pycparser, python-dateutil, pyparsing, pillow, numpy, kiwisolver, cycler, cffi, PyQtChart-Qt5, pynacl, pydicom, matplotlib, cryptography, bcrypt, pytrip98, PyQtChart, paramiko, Events, anytree, pytrip98gui
Successfully installed Events-0.4 PyQtChart-5.15.4 PyQtChart-Qt5-5.15.2 anytree-2.8.0 bcrypt-3.2.0 cffi-1.14.6 cryptography-3.4.8 cycler-0.10.0 kiwisolver-1.3.2 matplotlib-3.4.3 numpy-1.21.2 paramiko-2.7.2 pillow-8.3.2 pycparser-2.20 pydicom-2.2.1 pynacl-1.4.0 pyparsing-2.4.7 python-dateutil-2.8.2 pytrip98-3.4.0 pytrip98gui-1.3.1 six-1.16.0

Run pytripgui:

root@59bd2f2955d8:/# pytripgui 
Traceback (most recent call last):
  File "/usr/local/bin/pytripgui", line 5, in <module>
    from pytripgui.main import main
  File "/usr/local/lib/python3.9/dist-packages/pytripgui/main.py", line 7, in <module>
    from pytripgui.main_window_qt_vc.main_window_view import MainWindowQtView
  File "/usr/local/lib/python3.9/dist-packages/pytripgui/main_window_qt_vc/__init__.py", line 2, in <module>
    from pytripgui.main_window_qt_vc.main_window_cont import MainWindowController
  File "/usr/local/lib/python3.9/dist-packages/pytripgui/main_window_qt_vc/main_window_cont.py", line 6, in <module>
    from pytripgui.app_logic.app_callbacks import AppCallback
  File "/usr/local/lib/python3.9/dist-packages/pytripgui/app_logic/app_callbacks.py", line 13, in <module>
    from pytripgui.app_logic.charts import Charts
  File "/usr/local/lib/python3.9/dist-packages/pytripgui/app_logic/charts.py", line 1, in <module>
    from pytripgui.view.chart_widget import ChartWidget
  File "/usr/local/lib/python3.9/dist-packages/pytripgui/view/chart_widget.py", line 2, in <module>
    from PyQt5.QtChart import QChart, QChartView, QLineSeries
ImportError: /usr/local/lib/python3.9/dist-packages/PyQt5/Qt5/lib/libQt5Charts.so.5: undefined symbol: _ZdlPvm, version Qt_5
grzanka commented 3 years ago

What pip has installed:

root@59bd2f2955d8:~# pip freeze
anytree==2.8.0
bcrypt==3.2.0
cffi==1.14.6
cryptography==3.4.8
cycler==0.10.0
dbus-python==1.2.16
Events==0.4
kiwisolver==1.3.2
matplotlib==3.4.3
numpy==1.21.2
paramiko==2.7.2
Pillow==8.3.2
pycparser==2.20
pydicom==2.2.1
PyGObject==3.38.0
PyNaCl==1.4.0
pyparsing==2.4.7
PyQt5==5.15.4
PyQt5-sip==12.8.1
PyQtChart==5.15.4
PyQtChart-Qt5==5.15.2
python-dateutil==2.8.2
pytrip98==3.4.0
pytrip98gui==1.3.1
six==1.16.0

Note that version of pyqt5 version is the one installed using apt:

root@59bd2f2955d8:~# apt list --installed | grep pyqt5

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

python3-pyqt5.sip/hirsute,now 12.8.1-1build1 amd64 [installed,automatic]
python3-pyqt5/hirsute,now 5.15.4+dfsg-1 amd64 [installed]
grzanka commented 3 years ago

Removing packages installed using apt helps:

root@59bd2f2955d8:~# apt remove python3-pyqt5
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  adwaita-icon-theme at-spi2-core dbus dbus-user-session dconf-gsettings-backend dconf-service dmsetup fontconfig gir1.2-glib-2.0 glib-networking glib-networking-common glib-networking-services
  gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme libapparmor1 libargon2-1 libatk-bridge2.0-0 libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3
  libavahi-common-data libavahi-common3 libcairo-gobject2 libcairo2 libcolord2 libcryptsetup12 libcups2 libdatrie1 libdbus-1-3 libdconf1 libdevmapper1.02.1 libdouble-conversion3 libdrm-amdgpu1 libdrm-common
  libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libegl-mesa0 libegl1 libelf1 libepoxy0 libevdev2 libfribidi0 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common
  libgirepository-1.0-1 libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 libglib2.0-data libglvnd0 libglx-mesa0 libglx0 libgraphite2-3 libgtk-3-0 libgtk-3-bin libgtk-3-common libgudev-1.0-0 libharfbuzz0b
  libice6 libicu67 libinput-bin libinput10 libip4tc2 libjson-c5 libjson-glib-1.0-0 libjson-glib-1.0-common libkmod2 liblcms2-2 libllvm12 libmd4c0 libmtdev1 libnss-systemd libpam-systemd libpango-1.0-0
  libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0 libpcre2-16-0 libpixman-1-0 libproxy1v5 libpsl5 libqt5core5a libqt5dbus5 libqt5designer5 libqt5gui5 libqt5help5 libqt5network5 libqt5printsupport5
  libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5widgets5 libqt5xml5 librest-0.7-0 librsvg2-2 librsvg2-common libsensors-config libsensors5 libsm6 libsoup-gnome2.4-1 libsoup2.4-1 libthai-data
  libthai0 libvulkan1 libwacom-bin libwacom-common libwacom2 libwayland-client0 libwayland-cursor0 libwayland-egl1 libwayland-server0 libx11-xcb1 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-icccm4
  libxcb-image0 libxcb-keysyms1 libxcb-present0 libxcb-randr0 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxcb-xfixes0 libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1
  libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxinerama1 libxkbcommon-x11-0 libxkbcommon0 libxml2 libxrandr2 libxrender1 libxshmfence1 libxtst6 libxxf86vm1 mesa-vulkan-drivers
  networkd-dispatcher publicsuffix python3-dbus python3-gi python3-pyqt5.sip qt5-gtk-platformtheme qttranslations5-l10n shared-mime-info systemd systemd-sysv systemd-timesyncd ubuntu-mono x11-common
  xdg-user-dirs xkb-data
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  python3-pyqt5
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 16.9 MB disk space will be freed.
Do you want to continue? [Y/n] 
(Reading database ... 34615 files and directories currently installed.)
Removing python3-pyqt5 (5.15.4+dfsg-1) ...
root@59bd2f2955d8:~# pip install pytrip98gui -U
Requirement already satisfied: pytrip98gui in /usr/local/lib/python3.9/dist-packages (1.3.1)
Collecting pytrip98gui
  Using cached pytrip98gui-1.3.1-py3-none-any.whl (621 kB)
  Downloading pytrip98gui-1.3.0-py3-none-any.whl (618 kB)
     |████████████████████████████████| 618 kB 2.0 MB/s 
Requirement already satisfied: anytree~=2.8 in /usr/local/lib/python3.9/dist-packages (from pytrip98gui) (2.8.0)
Requirement already satisfied: paramiko~=2.7 in /usr/local/lib/python3.9/dist-packages (from pytrip98gui) (2.7.2)
Requirement already satisfied: Events~=0.4 in /usr/local/lib/python3.9/dist-packages (from pytrip98gui) (0.4)
Requirement already satisfied: pytrip98~=3.4 in /usr/local/lib/python3.9/dist-packages (from pytrip98gui) (3.4.0)
Collecting PyQt5>=5.15
  Downloading PyQt5-5.15.4-cp36.cp37.cp38.cp39-abi3-manylinux2014_x86_64.whl (8.3 MB)
     |████████████████████████████████| 8.3 MB 29.4 MB/s 
Requirement already satisfied: PyQtChart>=5.15 in /usr/local/lib/python3.9/dist-packages (from pytrip98gui) (5.15.4)
Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.9/dist-packages (from anytree~=2.8->pytrip98gui) (1.16.0)
Requirement already satisfied: pynacl>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from paramiko~=2.7->pytrip98gui) (1.4.0)
Requirement already satisfied: bcrypt>=3.1.3 in /usr/local/lib/python3.9/dist-packages (from paramiko~=2.7->pytrip98gui) (3.2.0)
Requirement already satisfied: cryptography>=2.5 in /usr/local/lib/python3.9/dist-packages (from paramiko~=2.7->pytrip98gui) (3.4.8)
Requirement already satisfied: cffi>=1.1 in /usr/local/lib/python3.9/dist-packages (from bcrypt>=3.1.3->paramiko~=2.7->pytrip98gui) (1.14.6)
Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko~=2.7->pytrip98gui) (2.20)
Collecting PyQt5-Qt5>=5.15
  Downloading PyQt5_Qt5-5.15.2-py3-none-manylinux2014_x86_64.whl (59.9 MB)
     |████████████████████████████████| 59.9 MB 98 kB/s 
Requirement already satisfied: PyQt5-sip<13,>=12.8 in /usr/lib/python3/dist-packages (from PyQt5>=5.15->pytrip98gui) (12.8.1)
Requirement already satisfied: PyQtChart-Qt5>=5.15 in /usr/local/lib/python3.9/dist-packages (from PyQtChart>=5.15->pytrip98gui) (5.15.2)
Requirement already satisfied: numpy>=1.20.0 in /usr/local/lib/python3.9/dist-packages (from pytrip98~=3.4->pytrip98gui) (1.21.2)
Requirement already satisfied: pydicom in /usr/local/lib/python3.9/dist-packages (from pytrip98~=3.4->pytrip98gui) (2.2.1)
Requirement already satisfied: matplotlib in /usr/local/lib/python3.9/dist-packages (from pytrip98~=3.4->pytrip98gui) (3.4.3)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->pytrip98~=3.4->pytrip98gui) (1.3.2)
Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->pytrip98~=3.4->pytrip98gui) (8.3.2)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.9/dist-packages (from matplotlib->pytrip98~=3.4->pytrip98gui) (2.8.2)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.9/dist-packages (from matplotlib->pytrip98~=3.4->pytrip98gui) (0.10.0)
Requirement already satisfied: pyparsing>=2.2.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->pytrip98~=3.4->pytrip98gui) (2.4.7)
Installing collected packages: PyQt5-Qt5, PyQt5
Successfully installed PyQt5-5.15.4 PyQt5-Qt5-5.15.2
root@59bd2f2955d8:~# pytripgui 
qt.qpa.xcb: could not connect to display 
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)