ラズベリーパイbookwormのPython環境
ラズベリーパイOS Bookworm からPythonの実行環境周りが変更されたため、pipでそのままモジュールをインストールしたりすることができなくなりました。
うぉー動かねー
問題点は何か
まずは以前まで何もせず実行できていたライブラリのインストールコマンドを実行してみると以下のようなエラーメッセージが表示されます。
kota@pi4:~ $pip3 install termcolor
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
えっ、困る・・
ではエラーメッセージを見ていきましょう。
error: externally-managed-environment
まずここでは、"externally-managed-environment"つまり、外部で管理されている環境です。とあります。そのために動かなかったのですね。
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
そしてここでは、システム全体にインストールしたいのなら apt install python3-xyzのように実行してねと書かれています。
system-wide には様々な別名がありますが、グローバルなどとも呼ばれます。意味としてはラズベリーパイOS上で別のユーザーを作成していても、そのユーザーに影響が出ます。そのため複数のPythonプログラムを動作させてているラズベリーパイでは若干注意が必要です。
原因はわかったのでどうする
システム全体にインストールしても良いのですが、今回は仮想環境をセットアップする方法でやっていきます。
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
では、この説明に書かれている通り以下のコマンドを実行してみると言いたいところですが、最後の"path/to/venv"は仮想環境へのパスになりますので、そこだけ置き換えて実行します。
kota@pi4:~ $ cd
実行する前に"cd"コマンドでホームディレクトリに移動します。
kota@pi4:~ $ python3 -m venv default
今回は、defaultという名前にしました。
仮想化された環境でインストール
では仮想環境内のコマンドでインストールをしていきます。
kota@pi4:~ $ ./default/bin/pip3 install termcolor
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting termcolor
Downloading https://www.piwheels.org/simple/termcolor/termcolor-2.4.0-py3-none-any.whl (7.7 kB)
Installing collected packages: termcolor
Successfully installed termcolor-2.4.0
無事動いた!
パッケージのインストールができたのであとはもうこっちのものです。
仮想化された環境で実行する
実行はこれまで python3 と実行していた箇所を作成した仮想化環境の python3 に置き換えます。具体的には以下のようにコマンドを書き換えます。
最後に
よくエラーメッセージを読めば基本的に全部書いてあるので、落ち着いて1行づつ意味を確認するとなんとかなります。
他のエラーの際も同様にメッセージが出力されている場合はなんとかなる場合が多いので落ち着いて1行ずつ意味を確認して進めるが吉です。
結局読まずにChatGPTとかに聞いちゃうんですけどね!