Zum Inhalt springen
QGIS
Troubleshooting

QGIS Flatpak: No module named pip und Read-only file system beheben

No module named pip in QGIS Flatpak und Read-only file system

Führe pip über das Flatpak mit --devel aus und installiere mit --user: flatpak run --devel --command=pip3 org.qgis.qgis install scipy --user. Wenn pip selbst fehlt, erstelle es zuerst mit flatpak run --command=python3 org.qgis.qgis -m ensurepip --upgrade --user.

/usr/bin/python3: No module named pip

bwrap: execvp pip3: No such file or directory

ERROR: Could not install packages due to an EnvironmentError:
[Errno 30] Read-only file system: '/usr/lib/python3.11/site-packages/urllib3-1.25.9.dist-info'

error: runtime/org.kde.Sdk/x86_64/5.15-22.08 not installed

Gilt für das Flathub-QGIS-Paket org.qgis.qgis auf jeder Linux-Distribution.

Warum das passiert

Das Flatpak bringt seine eigene Python-Umgebung mit, getrennt von der Python-Umgebung deiner Distribution. Deshalb ist ein Paket, das du mit dem System-pip oder apt hinzugefügt hast, für QGIS nicht sichtbar. Innerhalb der Sandbox ist /usr schreibgeschützt eingebunden. Genau das verursacht die Zeile [Errno 30]: Ein einfaches pip install versucht, dort zu schreiben, und wird abgewiesen. --user legt die Dateien stattdessen in einem schreibbaren Verzeichnis ab.

pip befindet sich im SDK, nicht in der Runtime, mit der QGIS normalerweise gestartet wird. Ohne --devel gibt es kein pip3, das ausgeführt werden kann. Das ist die Ursache für die Zeile bwrap: execvp. Außerdem benötigt --devel das passende SDK, das auf deinem Rechner installiert sein muss. Das erklärt die letzte Zeile.

Die Lösung

Das passende SDK für dein QGIS Flatpak installieren

Lies die Sdk-Zeile aus flatpak info org.qgis.qgis ab und installiere anschließend genau diesen Branch, zum Beispiel flatpak install flathub org.kde.Sdk//6.7. Der Branch aus der Fehlermeldung ist der benötigte.

Sicherstellen, dass pip vorhanden ist

flatpak run --command=python3 org.qgis.qgis -m ensurepip --upgrade --user

Das Paket installieren

flatpak run --devel --command=pip3 org.qgis.qgis install scipy --user

Ersetze scipy durch das Paket, das dein plugin benötigt. Behalte beide Optionen bei: --devel, um pip zu erreichen, und --user, um in ein Verzeichnis zu schreiben, das die Sandbox zulässt.

Prüfen, ob QGIS das Paket erkennt

Starte QGIS neu, öffne Plugins und dann Python Console, und importiere das Modul. Wenn der Import dort funktioniert, findet das plugin es ebenfalls.

Wenn das nicht funktioniert hat

  • Ermittle, wo die Dateien tatsächlich gelandet sind: flatpak run --command=python3 org.qgis.qgis -c "import site; print(site.getusersitepackages())". Vergleiche das Ergebnis mit sys.path in der QGIS Python Console. Wenn das Verzeichnis fehlt, kann dort nichts Installiertes jemals importiert werden.
  • Ein Paket, das C-Erweiterungen kompiliert, kann trotzdem fehlschlagen. Das SDK enthält zwar einen Compiler, aber nicht jeden Entwicklungs-Header, und du kannst keinen von außerhalb der Sandbox hinzufügen. Suche nach einem Wheel-Build desselben Pakets.
  • Installiere QGIS unter Debian und Ubuntu aus dem offiziellen QGIS-Repository statt aus Flathub. QGIS verwendet dann die System-Python-Umgebung, und plugin-Abhängigkeiten lassen sich mit gewöhnlichem pip installieren.