Saltar al contenido
Volver al blog
QGIS
Troubleshooting

No module named pip en QGIS Flatpak y Read-only file system

No module named pip en QGIS Flatpak y Read-only file system

Ejecuta pip mediante Flatpak con --devel e instala con --user: flatpak run --devel --command=pip3 org.qgis.qgis install scipy --user. Si falta pip, créalo primero con 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

Esto se aplica al paquete QGIS de Flathub, org.qgis.qgis, en cualquier distribución de Linux.

Por qué ocurre

Flatpak incluye su propio Python, separado del que instaló tu distribución, por lo que un paquete que añadiste con el pip del sistema o con apt no es visible para QGIS. Dentro del sandbox, /usr está montado como solo lectura, lo que explica la línea [Errno 30]: un pip install normal intenta escribir allí y se rechaza. --user envía los archivos a un directorio escribible.

Pip está en el SDK, no en el runtime con el que QGIS se inicia normalmente. Sin --devel no hay ningún pip3 que ejecutar, lo que explica la línea bwrap: execvp. Además, --devel necesita que el SDK correspondiente esté instalado en tu máquina, que es lo que indica la última línea.

La solución

Install the SDK that matches your QGIS Flatpak

Lee la línea Sdk de flatpak info org.qgis.qgis y luego instala esa rama exacta, por ejemplo flatpak install flathub org.kde.Sdk//6.7. La rama del mensaje de error es la que necesitas.

Make sure pip exists

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

Install the package

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

Sustituye scipy por lo que pida tu plugin. Mantén ambas opciones: --devel para acceder a pip y --user para escribir en un lugar permitido por el sandbox.

Check QGIS sees it

Reinicia QGIS, abre Plugins y después Python Console, e importa el módulo. Si se importa allí, el plugin también lo encontrará.

Si no funcionó

  • Averigua dónde terminaron realmente los archivos: flatpak run --command=python3 org.qgis.qgis -c "import site; print(site.getusersitepackages())". Compáralo con sys.path en Python Console de QGIS. Si el directorio no está presente, nada de lo que se haya instalado allí podrá importarse.
  • Un paquete que compile extensiones de C puede seguir fallando. El SDK tiene un compilador, pero no todas las cabeceras de desarrollo, y no puedes añadirlas desde fuera del sandbox. Busca una compilación wheel del mismo paquete.
  • En Debian y Ubuntu, instala QGIS desde el repositorio oficial de QGIS en lugar de Flathub. QGIS usará entonces el Python del sistema y las dependencias de los plugins se instalarán con pip normal.