ラズパイ5 pythonの仮想環境 ① しくみ
ラズパイは、 2023年10月更新 のbookwormで、python2がなくなり、python3だけになりました。bookwormから?は、Python3はPEP 668に従い、pipでインストールできるモジュール(ライブラリ)が、
- Debianディストリビューションそのもの
- Debian Free Software Guidelines(DFSG)に準拠しているがビルド時もしくは動作時にDebianディストリビューション外のソフトウェアが必要となるもの
- Debianディストリビューションと互換性はあるがDFSGに準拠しない
が明確に分けられたようです。
具体的には、三つ目の、メジャー?でないもの(外部ライブラリと呼ばれている?)は、システムにあるpythonにはpipコマンドを使ってインストールができなくなりました。システムにあるpythonに対してモジュール(ライブラリ)をインストールするには、
--break-system-packages
オプションを利用してpipでインストールする方法があります。
しかし、推奨されるのは、pythonの仮想環境を構築して、そのなかにあるpythonにモジュール(ライブラリ)をインストールして利用することのようです。そうすれば、システムにあるpython環境が汚れない?で済み、仮想環境は複数作れるようなので、トラブルが起こった時に、切り分けができるようなメリットがあるようです。
●環境
- ハードウェア Raspberry Pi 5(4GBモデル)
- OS Raspberry Pi OS (64ビット)、リリース日December 5th 2023
- Windows10 22H2にて、ssh(OpenSSH_9.2p1 Debian-2+deb12u2, OpenSSL 3.0.11 19 Sep 2023)および、VNC Viewerを動作させている
●仮想環境の作り方
システムのpythonには、たくさんのモジュール(ライブラリ)がインストールされています。
$ pip list 。。。 |
仮想環境を作ると、なにもインストールされていない状態になります。したがって、わりとよく使うベーシックなライブラリも一つ一つインストールしていく必要があります。timeのように標準で組み込まれているモジュール(built in module)は、インストールせずにすぐに使えます。
仮想環境を利用するには、
- 作成
- 有効化
の二つの作業が必要です。オフィシャルのドキュメントは次のWebにあります。
現在のpythonのバージョンを確認します。
$ python -V
Python 3.11.2
仮想環境を「作成」します。
$ python -m venv env
3秒ほどで、プロンプトが戻ってきました。envフォルダができていて、binの中にpython3.11、pip3.11などの実行ファイルがインストールされ、libの中にpython3.11のフォルダがあり、この中のsite-packagesにモジュール(ライブラリ)がインストールされます。
仮想環境を「有効化」します。プロンプト部分が変化しました。
yoshi@ras05:~ $ source env/bin/activate
(env) yoshi@ras05:~ $
モジュールを表示します。
(env) yoshi@ras05:~ $ pip list
Package Version
---------- -------
pip 23.0.1
setuptools 66.1.1
(env) yoshi@ras05:~ $
ここでプログラミングを行います。 |
そこから抜けるには、仮想環境を「無効化」します。
(env) yoshi@ras05:~ $ deactivate
yoshi@ras05:~ $
もとのpythonの環境に戻りました。
$ pip list 。。。 |
作成したenvフォルダは残ったままです。