コンテンツへスキップ
ブログに戻る
QGIS
Troubleshooting

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が含まれています。そのため、システムの pipapt で追加したパッケージは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でインストールできます。