QGIS Flatpak 出現 No module named pip 與 Read-only file system 錯誤的解法
QGIS Flatpak 中的 No module named pip 與 Read-only file system 錯誤
透過 Flatpak 搭配 --devel 執行 pip,並使用 --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
適用於 Flathub 的 QGIS 套件 org.qgis.qgis,以及任何 Linux 發行版。
問題原因
Flatpak 內建自己的 Python,與你的 Linux 發行版所安裝的 Python 分開,因此你使用系統 pip 或 apt 加入的套件,QGIS 看不到。在沙盒中,/usr 以唯讀方式掛載,這就是 [Errno 30] 那一行的原因:一般的 pip install 會嘗試寫入該位置,因此遭到拒絕。--user 會將檔案放到可寫入的目錄。
pip 位於 SDK 中,而不是 QGIS 通常啟動時使用的 runtime。沒有 --devel 就沒有可執行的 pip3,因此會出現 bwrap: execvp 那一行。而且 --devel 需要在你的電腦上安裝相符的 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,然後匯入模組。如果模組能在那裡匯入,plugin 也能找到它。
如果這樣仍然無法運作
- 找出檔案實際安裝的位置:
flatpak run --command=python3 org.qgis.qgis -c "import site; print(site.getusersitepackages())"。將結果與 QGIS Python Console 中的sys.path比較。如果該目錄不存在,安裝在那裡的任何套件都無法匯入。 - 需要編譯 C extensions 的套件仍可能失敗。SDK 有編譯器,但不一定具備所有 development header,而且你無法從沙盒外部加入這些檔案。請尋找相同套件的 wheel build。
- 在 Debian 和 Ubuntu 上,請改用 官方 QGIS 儲存庫 安裝 QGIS,而不是使用 Flathub。QGIS 之後會使用系統 Python,plugin 相依套件也能使用一般的 pip 安裝。

