(2025-02-23 初稿)
はじめに
ずっと面倒なので見て見ぬふりをしていたが、以下の記事も出たことだし、いつまでも避けて通れなさそうなので、pyhon3のvenvを使うことにした。
上記の記事によると、以下の3つのパターンがあるとのこと。
1. インストールしようとするライブラリのパッケージ(python3-hoge)がある場合。
何も考えずに、aptでinstallすれば、そのPC内のユーザ全員が使える。
かつ、debパッケージなので、不要になれば削除もきれいにやってくれる。
2. シンプルなスクリプトで、pythonの標準ライブラリのみで実行できる場合。筆者はこれが多いかも…
この場合も、venv等の仮想環境は不要。
3. 標準ライブラリにはないパッケージをインストールしなければならない場合。
今回の記事は、この3.の場合を想定して書く。
ちなみに、4.と5.は筆者が思ったことを追加した。
4. pipに「--break-system-packages」オプションを付けて、Python全体のパッケージとしてインストールする。
5. pipxを用いて独立な環境でインストールする。筆者が困ったのは、複数のパッケージをインストールする必要がある場合に使い方がわからなかった。(T_T) これについては、今後、勉強する予定。
さて、今回はDebian等Linuxでの3.の場合を記述するが、3.の場合のvenvにインストールするために参照したサイトは以下のとおり。
それでは、以下では、hoge というパッケージをvenvの仮想環境でhoge.pyというスクリプトを動かす例で説明する。
準備
まず最初に、python3-venv等必要なパッケージをインストールする。
もちろん、既にインストールされていれば不要。
$ sudo apt install python3-venv $ sudo apt install python3-pip
pythonのスクリプトをpysrcに作成している場合は、以下のとおり作成し、ディレクトリに移動する。
$ mkdir ~/pysrc/hoge $ cd ~/pysrc/hoge
仮想環境の作成
続いて仮想環境を作成する。
$ python3 -m venv venv
最後のvenvはvenvという名前でなくても良いようだが、venvという名称が広く用いられている。
アクティベート
作成した仮想環境をアクティベートする
$ source venv/bin/activate $ . venv/bin/activate
上下、どちらの方法でもアクティベートできる。
ライブラリのインストール
続いて、目的のライブラリをインストールする。
(venv)$ pip install hoge
ちなみに仮想環境でインストールされているパッケージの一覧。
pip listでも良いけど、freezeだと環境を移植する際に必要なパッケージのみrequirements.txt形式で出力してくれる。
(venv)$ pip freeze
仮想環境の終了
(venv)$ deactivate
作成したスクリプトの実行
作成したスクリプトは、仮想環境をアクティベートした状態で、以下のとおり実行する。
(venv) $ python hoge.py
ちなみに以下の引用元によると、パッケージのインストールや実行は、フルパスでインストールや実行をしてやれば、アクティベイトしなくてもできるとのこと。
$ ~/pysrc/hoge/venv/bin/python3 ~/pysrc/hoge/hoge.py
他のスクリプトから呼び出して実行するときに、いちいちアクティベイトしなくても良いから便利そうだね。