TOPに戻る

ラズパイ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
Package                            Version
---------------------------------- -------------------------
appdirs                            1.4.4
arandr                             0.1.11
asgiref                            3.6.0
astroid                            2.14.2
asttokens                          2.2.1

。。。

 仮想環境を作ると、なにもインストールされていない状態になります。したがって、わりとよく使うベーシックなライブラリも一つ一つインストールしていく必要があります。timeのように標準で組み込まれているモジュール(built in module)は、インストールせずにすぐに使えます。

 仮想環境を利用するには、

  • 作成
  • 有効化

の二つの作業が必要です。オフィシャルのドキュメントは次のWebにあります。

  venv --- 仮想環境の作成

 現在の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
Package                            Version
---------------------------------- -------------------------
appdirs                            1.4.4
arandr                             0.1.11
asgiref                            3.6.0
astroid                            2.14.2
asttokens                          2.2.1

。。。

 

 作成したenvフォルダは残ったままです。

-