なんだか、変わってしまったのう
むずかしそうな顔をして。
入れるために「pip」を使ったら
コマンドを受け付けないのだ。
少し環境が変わっているからのぉ
よし確認してみるか。
今回使用するRaspberry Pi はこちら!
各コマンドの頭にある「$ 」はプロンプト部分なので、入力は不要です。
先にこちらの記事を読まれることをおススメします。
すけろく Raspberry Pi は、OSの書き込みも簡単で すぐに使いはじめられるな! げんろく 初期設定はちゃんとしたのか? まさか、初期設定のまま使っていることはないよな? […]
Raspberry Pi OS(Bookworm)におけるPython環境の管理
冒頭にあった、OS上のPython環境と、仮想環境のPython?
という少し複雑な内容について確認していきます。
Raspberry Pi OS(Bookworm)には、OSインストール時に、Python環境が標準で構成(ビルトイン)されています。
基本的にOSインストール時に構成されるPythonのバージョンは新しいものになるのが通例です。
しかし、「少し古いPythonバージョンで動くプログラムを実行したい」、「開発時はOSのPython環境をいじりたくない」
という場合はどうすればよいのでしょうか。
そこで使用されるのが、仮想環境です。
仮想環境を構成する際によく使われるのが、「venv」です。
後でも触れますが、完全に環境を別にして動作するのではなく、パスを変更して別のPython環境に切り替えるというものです。
では、OS上に構成されているPythonと仮想環境でどのような管理の仕方ができるのでしょうか。
次からひとつひとつ見ていきます。
OS上のPython環境を管理する
これまで、Raspberry Pi OS上でのパッケージ管理というと以下の2つのものが混在していました。
- システムパッケージ管理(apt を使用)
- Pythonパッケージ管理(pip、pip3などを使用)
問題は、この2つのパッケージ管理機能(パッケージマネージャ)が競合することがある点です。
OSの構成を提供するディストリビューション(Debianなど)で管理しているPythonパッケージを
Pythonパッケージ管理(pipなど)で勝手に環境変更してしまうことの問題があったのです。
そこで、Pythonの機能拡充のための提案(PEP:Python Enhancement Proposal )の「PEP 668」では、
「Python固有のパッケージマネージャは、仮想環境上での実行を推奨すべき」というものが発表されました。
A long-standing practical problem for Python users has been …
Raspberry Pi OS(Bookworm)では、その内容が実現されています。
変更点を簡単にまとめると以下の通りです。
pipなどのPython固有のパッケージインストーラが実行された場合のチェック
①仮想環境外での実行かどうか。[ sys.prefix==sys.base_prefix ]
②以下のチェックを行い、ディストリビューションで管理されたパッケージかどうかを判断します。
EXTERNALLY-MANAGEDで識別されるディレクトリにファイルがあるか
[ sysconfig.get_path(“stdlib”, sysconfig.get_default_scheme()) ]
→両方の条件が当てはまる場合、Python環境のディレクトリへのパッケージのインストールが
仮想環境外では無効である旨のメッセージを表示して終了します。
Raspberry Pi OSでも以下のとおり表示されます。
Raspberry Pi OSのもとになっているDebianというディストリビューションで管理されていない
パッケージをインストール指示する際は、仮想環境(venv)を使うよう記載されています。
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.
管理されているパッケージについては、以下のコマンド形式でインストールすることができます。
apt install python3-xyz →xyzはパッケージ名
Pythonの仮想環境を管理する
前述のとおり、開発などを行う場合は、主に仮想環境を使用するほうが推奨ということになります。
ここでは、仮想環境の構成方法を確認していきます。
OS上のPython環境を確認する
仮想環境を構築する前に、OS上にあるPythonにインストールされているパッケージを確認してみます。
仮想環境を作った際には、パッケージはインストールされていない状態なので、各自で必要なものをインストールする必要があります。
SSHを使ってRaspberry Pi にログインします。
ログイン後、以下のコマンドを実行します。
$ pip list
コマンドを実行するとインストール済みのパッケージが出力されます。
Package Version ---------------------------------- ---------- asgiref 3.6.0 astroid 2.14.2 asttokens 2.2.1 attrs 22.2.0 ~ 中略 ~ wheel 0.38.4 wrapt 1.14.1 zipp 1.0.0
Pythonでよく使う「numpy」や、「pigpio」は既にインストールされていることがわかります。
Python仮想環境を構成する
Raspberry Pi OS上にPython仮想環境を構成します。
今回は「venv」を使います。
今回はOS上にあるPythonと同じバージョンを構成します。
1
Raspberry Pi OS上のPythonバージョンを確認します。
次のコマンドを実行します。
$ python -V
実行するとバージョンが出力されます。
$ python -V Python 3.11.2
2
次にPython仮想環境を「env」というフォルダに構成します。
次のコマンドを実行します。
$ python -m venv env
2~3秒ほど経過後して処理が終わったら、プロンプトが戻ってきます。(次のコマンドが実行可能な状態)
これでPython仮想環境が構築できました。
仮想環境でも利用できるようにするには、仮想環境作成コマンドを
以下のように変更すればよいです。(コマンド例)
$ python -m venv --system-site-packages env
3
作成すると「env」というフォルダ内に環境が作成されています。

- 「bin」…仮想環境を有効化するための実行ファイルなどが保存されています。
- 「lib」「lib64」…フォルダ内にパッケージがインストールされる「site-packages」があります。
仮想環境を有効化します。
$ source env/bin/activate
"user"@"host" $ source env/bin/activate (env)"user"@"host" $
5
Python仮想環境のバージョンとインストールされているパッケージを確認します。
(env) $ python -V Python 3.11.2
(env) $ pip list
Package Version
---------- -------
pip 23.0.1
setuptools 66.1.1
6
パッケージをインストールしてみます。
(env) $ pip install numpy
(env) $ pip list Package Version ---------- ------- numpy 2.2.4 pip 23.0.1 setuptools 66.1.1
Python仮想環境の使用を停止する場合は「無効化」します。
(env) $ deactivate
(env) "user"@"host" $ deactivate "user"@"host" $
編集後記
いかがだったでしょうか。
今回の記事では、Raspberry Pi OS上のPython環境におけるPythonパッケージの管理についてまとめました。
「PEP 668」による変更を知ることでより理解が深まったかと思います。
今回使用したRaspberry Pi はこちら!
Raspberry Pi の他の記事はこちらからどうぞ!
すけろく うーむ げんろく どうした。 難しい顔をして。 すけろく PythonでRaspberry Pi につないだ キーボードのどのキーが押されたか わからんのだ。 げんろく よし。 今回はPythonでRaspberry Pi の キーボードイベントを調べてみよう。 今回の記事は、Raspberry Pi OS上でのPython開発をしていると、 カメラ制御などの際に、画像や動画の取得の開始 […]
すけろく Raspberry Pi OS上ではなく、リモートで 開発環境を作れないものか。 げんろく うむ。 ディスプレイやマウス、キーボードをつないで 開発するのは面倒だからな。 すけろく そうなのだ。 SSHだけでやるのも面倒だし。 げんろく わかった。 VNCとVScodeを使ってリモートで 開発できる環境を作ってみよう! Raspberry Pi 5でPython開発する際に思うのは、開発 […]
すけろく んー なんだか、変わってしまったのう げんろく どうした? むずかしそうな顔をして。 すけろく Raspberry Pi OSのPythonにパッケージを 入れるために「pip」を使ったら コマンドを受け付けないのだ。 げんろく うむ。 少し環境が変わっているからのぉ よし確認してみるか。 Raspberry Pi OSでプログラムを実行する場合、Pythonを使うことも多いですが、Ra […]
すけろく よし!ユーザも変更したし、自動ログインも できないようにしたぞ! これでやっと・・・ げんろく それは良い心がけだな。 Wi-Fiの設定(パスフレーズの暗号化状態)は 確認したのかな? すけろく 。。。 げんろく 今すぐやったほうがよいよ! 念のためにな。 Raspberry Pi のOSインストール、セキュリティ設定とこれまで説明してきました。 この記事では、セキュリティ設定の続きとし […]
すけろく Raspberry Pi は、OSの書き込みも簡単で すぐに使いはじめられるな! げんろく 初期設定はちゃんとしたのか? まさか、初期設定のまま使っていることはないよな? すけろく 。。。 げんろく 初期設定のままだと、特にユーザ名は公開名だから セキュリティ上よろしくないのだ。 そのあたりも含めて説明しよう。 Raspberry Pi のOSインストール(MicroSDへの書き込み)に […]
すけろく 「ラズベリーパイ」を買ってきたぞ! げんろく 「お!もしかして、有名店のおいしいやつか!」って ベタな反応はしないぞ。Raspberry Piだろ? 前回も同じくだりがあったような。 すけろく チッ、つまらんやつだのう。 まあ、その通りだが。。。 Raspberry Pi のOS書き込みツールやら Raspberry Pi 5やらいろいろと出たので 初期設定の方法を再度確認したいのだ。 […]
すけろく うーむ。 このカメラは、Raspberry Pi では使えないのか? げんろく どうした。 カメラを見つめて。 すけろく Raspberry Pi でカメラがうまく認識できないのだ。 公式のカメラではないからなのか。 わからなくてな。 げんろく Raspberry Pi では、カメラの自動認識機能があって 認識範囲外のカメラを使うときはコツがいるぞ。 今回はそのあたりを紹介してみよう。 […]
すけろく うっ。 拙者ももはや、これまでか。。。 げんろく どうした!? 気をしっかり持つのじゃ! 何があった? すけろく わしの相棒(ラズパイ)からの連絡がここしばらくない。。 嫌われたかのう(涙)。。。 げんろく なんだ、そんなことか。 心配して損したのう。Rassbery Pi OS側のネットワークが 無効になったりすることもあるぞ。。 すけろく ・・・なに! 嫌われたのではないのだな! げ […]
すけろく よし!ユーザも変更したし、自動ログインも できないようにしたぞ! これでやっと・・・ げんろく それは良い心がけだな。 Wi-Fiのパスフレーズの暗号化はしたのかな? すけろく 。。。 げんろく 今すぐやったほうがよいよ! 念のためにな。 Raspberry Pi のOSインストール、セキュリティ設定とこれまで説明してきました。 この記事では、セキュリティ設定の続きとして、Wi-Fiのパ […]
すけろく Raspberry Pi は、OSの書き込みも簡単で すぐに使いはじめられるな! げんろく 初期設定はちゃんとしたのか? まさか、初期設定のまま使っていることはないよな? すけろく 。。。 げんろく 初期設定のままだと、特にユーザ名は公開名だから セキュリティ上よろしくないのだ。 そのあたりも含めて説明しよう。 Raspberry Pi のOSインストール(MicroSDへの書き込み)に […]
すけろく 外出先でノートパソコンとRaspberry Piで いい感じにドヤれる開発手法はないか? げんろく ほう。それならUSB On-The-Goを使う手があるぞ。 パソコンとRaspberry PiをUSBケーブルでつないで ゴニョゴニョできるしな。電源もとれる。 すけろく なに!いいではないか! それを教えてくれ。 カフェで優越感に浸っている自分が見えるぞ! げんろく 不純な動機だな。 最 […]
すけろく 「ラズベリーパイ」を買ってきたぞ! げんろく 「お!もしかして、有名店のおいしいやつか!」って ベタな反応はしないぞ。Raspberry Piだろ? すけろく チッ、つまらんやつだのう。 まあ、その通りだが。。。 今回は初期設定を学びたいと思っている。 げんろく わかった。 OSのインストールから初期設定までを教えてやろう。 皆さんは「Raspberry Pi」ってご存じですか? 「ラズ […]
すけろく Raspberry PiやJetsonのシングルボードコンピュータを使っていると 必要になるmicroSDカード。 何を買えばよいのやら。。。 げんろく microSDカードには意外といろんな規格があるんだよな。 しかも安価なものは信頼性が低かったりするし。 すけろく 価格で選んで、結果動かなかったり、動作が遅かったりする。 悩みどころだな。 げんろく ここいらで、一度microSDカー […]