venvによる仮想環境

自分でプログラミングするなら、最新のPythonをインストールして、最新のパッケージと組み合わせて使えばいいので、簡単です。でも、特定の作業をするためには、Pythonのバージョンやパッケージのバージョンを指定しなければならないことがよくあります。あるいは、あまり有名でないパッケージを試したいけれど普段使いの環境にインストールするのは怖いと思うことがあります。このようなときに、Python標準のモジュール venv による仮想環境が役に立ちます。

あるディレクトリの中で特定の作業をするとしましょう。まずはこのディレクトリの中でターミナルに次のように打ち込みます:

python3 -m venv .venv

別バージョンのPythonを使いたいなら、絶対パスで指定します。例:

/Library/Frameworks/Python.framework/Versions/3.13/bin/python3 -m venv .venv

すると、このディレクトリの中に .venv というサブディレクトリができます。この名前は .venv でなくても何でもよく、場所も別のディレクトリに作ってもいいのですが、自分で流儀を決めておくとわかりやすくなります。

さて、.venv というディレクトリには bin というサブディレクトリができ、その中に activate というbash/zshシェルスクリプト(およびcsh等のシェルのための同様のシェルスクリプト)ができます。bashやzshを使っているなら、

source .venv/bin/activate

と打ち込みます。するとシェルのプロンプトの先頭に (.venv) という名前が付くようになります。この状態で python あるいは python3 と打つと、.venv を作る際に起動したPythonが実行されます(念のためシェルに hash -r と打ち込むと実行ファイルのパスのキャッシュがリフレッシュされます)。また、サードパーティのパッケージはまったくインストールされていない状態になります。

このまっさらな環境で、まずは pip install ... で必要なパッケージをインストールします。パッケージは .venv/lib/python3.xx/site-packages 以下にインストールされます。

GitHubなどで公開されたものには、どういうパッケージが必要かを書き込んだテキストファイル requirements.txt が入っていることがよくあります。その場合は

pip install -r requirements.txt

と打ち込むだけでパッケージがインストールされます。このファイルには、例えば numpy==2.2.1 のようにパッケージ名とバージョンが行ごとに書き込まれています。

逆に、

pip freeze > requirements.txt

と打ち込めば、現在インストールされているパッケージ名とバージョンが並んだ requirements.txt ファイルが生成されますので、これを含めて公開すれば、パッケージのバージョン違いでうまく動かないといったことが避けられます。

最後に、activate された仮想環境を抜けるには、deactivate と打ち込みます。

仮想環境をもう使わないなら rm -rf .venv でディレクトリごと消します。