Pular para o conteúdo
Voltar ao blog
QGIS
Troubleshooting

Como corrigir o erro No module named pip no QGIS Flatpak e Read-only file system

Como corrigir o erro No module named pip no QGIS Flatpak e Read-only file system

Execute o pip pelo Flatpak usando --devel e instale com --user: flatpak run --devel --command=pip3 org.qgis.qgis install scipy --user. Se o pip estiver ausente, crie-o primeiro com 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

Aplica-se ao pacote QGIS do Flathub, org.qgis.qgis, em qualquer distribuição Linux.

Por que isso acontece

O Flatpak inclui seu próprio Python, separado daquele instalado pela sua distribuição, então um pacote adicionado com o pip ou apt do sistema fica invisível para o QGIS. Dentro do sandbox, /usr é montado como somente leitura, o que corresponde à linha [Errno 30]: um pip install comum tenta escrever nesse diretório e é recusado. --user envia os arquivos para um diretório gravável.

O Pip fica no SDK, não no runtime com o qual o QGIS normalmente é iniciado. Sem --devel, não existe pip3 para executar, o que corresponde à linha bwrap: execvp. E --devel precisa que o SDK correspondente esteja instalado na sua máquina, como mostra a última linha.

A solução

Instale o SDK correspondente ao seu QGIS Flatpak

Leia a linha Sdk de flatpak info org.qgis.qgis e instale essa branch exata, por exemplo flatpak install flathub org.kde.Sdk//6.7. A branch na mensagem de erro é a que você precisa.

Verifique se o pip existe

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

Instale o pacote

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

Substitua scipy pelo que seu plugin solicitar. Mantenha as duas opções: --devel para acessar o pip, --user para gravar em um local permitido pelo sandbox.

Verifique se o QGIS o reconhece

Reinicie o QGIS, abra Complementos, depois Console Python e importe o módulo. Se ele for importado ali, o plugin também o encontrará.

Se isso não funcionou

  • Descubra onde os arquivos realmente foram instalados: flatpak run --command=python3 org.qgis.qgis -c "import site; print(site.getusersitepackages())". Compare isso com sys.path no Console Python do QGIS. Se o diretório estiver ausente, nada instalado ali poderá ser importado.
  • Um pacote que compila extensões C ainda pode falhar. O SDK tem um compilador, mas não todos os cabeçalhos de desenvolvimento, e você não pode adicionar um de fora do sandbox. Procure uma versão wheel do mesmo pacote.
  • No Debian e no Ubuntu, instale o QGIS pelo repositório oficial do QGIS em vez do Flathub. O QGIS usará então o Python do sistema, e as dependências do plugin serão instaladas com o pip comum.