ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

そろそろpythonのvenvを使ってみる

(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) これについては、今後、勉強する予定。

さて、今回はDebianLinuxでの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

他のスクリプトから呼び出して実行するときに、いちいちアクティベイトしなくても良いから便利そうだね。

関連ページ