QGIS Flatpakの「No module named pip」と「Read-only file system」エラーを解決する方法
QGIS Flatpakで「No module named pip」と「Read-only file system」を解決する方法
pipを --devel付きでFlatpak経由で実行し、--userでインストールします: flatpak run --devel --command=pip3 org.qgis.qgis install scipy --user。pip自体が見つからない場合は、まず 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
Linuxディストリビューションを問わず、FlathubのQGISパッケージ org.qgis.qgis に適用されます。
原因
Flatpakには、ディストリビューションがインストールしたPythonとは別の、独自のPythonが含まれています。そのため、システムの pip や apt で追加したパッケージはQGISから見えません。サンドボックス内では /usr が読み取り専用でマウントされます。これが [Errno 30] の行の意味です。通常の pip install はそこに書き込もうとするため拒否されます。--userを使うと、代わりに書き込み可能なディレクトリへファイルが保存されます。
pipはSDK内にあり、QGISが通常起動するruntimeにはありません。--develなしでは実行する pip3 が存在しないため、bwrap: execvp の行になります。また、--develには、使用中のSDKに対応するSDKがマシンにインストールされている必要があります。これが最後の行の意味です。
解決方法
QGIS Flatpakに対応するSDKをインストールする
flatpak info org.qgis.qgis からSdkの行を確認し、その正確なブランチをインストールします。たとえば flatpak install flathub org.kde.Sdk//6.7 です。エラーメッセージに表示されたブランチが必要なものです。
pipが存在することを確認する
flatpak run --command=python3 org.qgis.qgis -m ensurepip --upgrade --user
パッケージをインストールする
flatpak run --devel --command=pip3 org.qgis.qgis install scipy --user
scipy をpluginが必要とするパッケージに置き換えます。両方のフラグを残してください。--devel はpipにアクセスするため、--user はサンドボックスが許可する場所に書き込むために使います。
QGISが認識できることを確認する
QGISを再起動し、Pluginsを開いてからPython Consoleでモジュールをimportします。そこでimportできれば、pluginからも見つけられます。
うまくいかなかった場合
- ファイルが実際に保存された場所を確認します:
flatpak run --command=python3 org.qgis.qgis -c "import site; print(site.getusersitepackages())"。QGISのPython Consoleでsys.pathと比較してください。ディレクトリがなければ、そこにインストールしたものは読み込まれません。 - C拡張をコンパイルするパッケージは、それでも失敗することがあります。SDKにはコンパイラがありますが、すべての開発用ヘッダーがあるわけではなく、サンドボックスの外部から追加することもできません。同じパッケージのwheelビルドを探してください。
- DebianとUbuntuでは、Flathubではなく公式QGISリポジトリからQGISをインストールします。QGISはシステムのPythonを使うようになり、pluginの依存関係は通常のpipでインストールできます。

