Ich versuche, ein echtes Durcheinander mit PyQt5 auf Ubuntu 22.04 zu entlarven. Es scheint, als ob ich einen Punkt erreiche, an dem ich es nicht deinstallieren kann, und ich frage michWarumgenau das ist nicht möglich, es wird mir folgender Fehler angezeigt:
$ sudo -H pip3 uninstall PyQt5
Found existing installation: PyQt5 5.15.6
ERROR: Cannot uninstall PyQt5 5.15.6, RECORD file not found. Hint: The package was installed by sip-build.
Installierte Dateien sind:
$ ls /usr/local/lib/python3.10/dist-packages/PyQt5
Qt5 sip.cpython-310-x86_64-linux-gnu.so
Weitere Infos:
$ sudo -H pip3 list | grep -i qt
PyQt5 5.15.6
PyQt5-Qt5 5.15.2
PyQt5-sip 12.11.0
PyQtWebEngine 5.15.5
QtAwesome 1.1.1
qtconsole 5.3.0
QtPy 2.2.0
sphinxcontrib-qthelp 1.0.3
Wie kann ich das benutzerdefinierte PyQt5 ordnungsgemäß deinstallieren (unter /usr/local/lib/python3.10/dist-packages/, beachten Sie dielokalTeil)?
Es geht hier nicht um das Entfernen, /usr/lib/python3/dist-packages/PyQt5
da dieser Ordner vom Systempaketmanager zum Installieren des offiziellen apt-Pakets verwendet wird python3-pyqt5
. Tatsächlich werden dadurch viele andere Dinge beschädigt:
$ sudo apt-get autoremove --purge python3-pyqt5
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
fonts-lyx* grass-core* grass-doc* libassimp5* libclang1-14* libdraco4* libfcgi-bin* libfcgi0ldbl* libjs-leaflet* liblaszip8* liblbfgsb0* libpdal-base13* libpdal-plugin-draco* libpdal-plugin-e57*
libpdal-plugin-faux* libpdal-plugin-hdf* libpdal-plugin-i3s* libpdal-plugin-icebridge* libpdal-plugin-pgpointcloud* libpdal-plugins* libpdal-util13* libqca-qt5-2* libqca-qt5-2-plugins* libqgis-3d3.26.2*
libqgis-analysis3.26.2* libqgis-app3.26.2* libqgis-core3.26.2* libqgis-customwidgets* libqgis-gui3.26.2* libqgis-native3.26.2* libqgis-server3.26.2* libqgisgrass7-3.26.2* libqgispython3.26.2*
libqscintilla2-qt5-15* libqscintilla2-qt5-l10n* libqt53danimation5* libqt53dcore5* libqt53dextras5* libqt53dinput5* libqt53dlogic5* libqt53dquickscene2d5* libqt53drender5* libqt5charts5* libqt5concurrent5*
libqt5designer5* libqt5designercomponents5* libqt5help5* libqt5keychain1* libqt5location5* libqt5opengl5* libqt5pdf5* libqt5positioningquick5* libqt5qml5* libqt5qmlmodels5* libqt5quick5* libqt5quickwidgets5*
libqt5sensors5* libqt5sql5* libqt5sql5-sqlite* libqt5test5* libqt5webchannel5* libqt5webengine-data* libqt5webengine5* libqt5webenginecore5* libqt5webenginewidgets5* libqt5webkit5* libqwt-qt5-6* libre2-9*
libspatialindex6* libsqlite3-mod-spatialite* libxsimd-dev* libzip4* pyqt5-dev-tools* python-babel-localedata* python-matplotlib-data* python3-babel* python3-beniget* python3-brotli* python3-cycler*
python3-decorator* python3-fonttools* python3-fs* python3-gast* python3-ipython-genutils* python3-jinja2* python3-jsonschema* python3-jupyter-core* python3-kiwisolver* python3-lz4* python3-matplotlib*
python3-mpmath* python3-nbformat* python3-owslib* python3-pbr* python3-plotly* python3-ply* python3-psycopg2* python3-pyproj* python3-pyqt5* python3-pyqt5.qsci* python3-pyqt5.qtpositioning*
python3-pyqt5.qtsql* python3-pyqt5.qtsvg* python3-pyqt5.qtwebchannel* python3-pyqt5.qtwebengine* python3-pyqt5.qtwebkit* python3-pyrsistent* python3-pythran* python3-qgis* python3-qgis-common* python3-scipy*
python3-sip* python3-sympy* python3-tenacity* python3-traitlets* python3-ufolib2* python3-unicodedata2* qdoc-qt5* qgis* qgis-common* qgis-plugin-grass* qgis-plugin-grass-common* qgis-provider-grass*
qgis-providers* qgis-providers-common* qhelpgenerator-qt5* qml-module-qtcharts* qt3d-assimpsceneimport-plugin* qt3d-defaultgeometryloader-plugin* qt3d-gltfsceneio-plugin* qt3d-scene2d-plugin* qt5-assistant*
qt5-image-formats-plugin-pdf* qtattributionsscanner-qt5* qttools5-dev-tools* unicode-data*
0 upgraded, 0 newly installed, 136 to remove and 0 not upgraded.
After this operation, 1’060 MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
-H
Mir wurde immer gesagt und ich habe immer das Flag mit verwendet, sudo
damit sich die Pakete nicht mit denen überschneiden, die von installiert wurden apt
, und sie im /usr/local/lib/...
Pfad statt in installiert werden /usr/lib/...
, aber bei PyQt5 scheint der Deinstallationsbefehl apt
stattdessen das Paket deinstallieren zu wollen... Warum? Weil, wenn ich den PyQT5-Ordner in manuell entferne /usr/local/lib/...
:
$ sudo rm -rf /usr/local/lib/python3.10/dist-packages/PyQt5*
und versuche dann, die Installation erneut durchzuführen. Es tritt der gleiche Fehler auf, allerdings etwas ausführlicher:
$ sudo -H pip3 install -U PyQt5
Requirement already satisfied: PyQt5 in /usr/lib/python3/dist-packages (5.15.6)
Collecting PyQt5
Using cached PyQt5-5.15.7-cp37-abi3-manylinux1_x86_64.whl (8.4 MB)
Collecting PyQt5-sip<13,>=12.11
Using cached PyQt5_sip-12.11.0-cp310-cp310-manylinux1_x86_64.whl (359 kB)
Collecting PyQt5-Qt5>=5.15.0
Using cached PyQt5_Qt5-5.15.2-py3-none-manylinux2014_x86_64.whl (59.9 MB)
Installing collected packages: PyQt5-Qt5, PyQt5-sip, PyQt5
Attempting uninstall: PyQt5
Found existing installation: PyQt5 5.15.6
ERROR: Cannot uninstall PyQt5 5.15.6, RECORD file not found. Hint: The package was installed by sip-build.
Aber ohne die -U
( --upgrade
)-Flags funktioniert es gut:
$ sudo -H pip3 install PyQt5
Requirement already satisfied: PyQt5 in /usr/lib/python3/dist-packages (5.15.6)
Collecting PyQt5-sip<13,>=12.8
Using cached PyQt5_sip-12.11.0-cp310-cp310-manylinux1_x86_64.whl (359 kB)
Installing collected packages: PyQt5-sip
Successfully installed PyQt5-sip-12.11.0
Dadurch wird tatsächlich der Ordner erstellt, den wir zuvor manuell gelöscht haben:/usr/local/lib/python3.10/dist-packages/PyQt5/
Das gleiche Verfahren funktioniert mit vielen anderen Python-Paketen sehr gut, aber anscheinend nicht mit PyQt5.
Mit Numpy habe ich beispielsweise sowohl
/usr/lib/python3/dist-packages/numpy/
(1.21.5) als auch
/usr/local/lib/python3/dist-packages/numpy/
(1.23.2).