【かそうかんきょう】

仮想環境(Python) とは?

💡 プロジェクトごとの「専用の道具箱」
📌 このページのポイント
仮想環境による隔離の仕組み OS(ホスト環境) プロジェクトA Python 3.10 Django 4.2 NumPy 1.24 独立した依存関係 隔離 プロジェクトB Python 3.12 Flask 3.0 NumPy 2.0 独立した依存関係 隔離 プロジェクトC Python 3.9 TensorFlow 競合しない
仮想環境のイメージ
ひよこ ひよこ

仮想環境がないとどうなるの?

ペンギン先生 ペンギン先生

全プロジェクトが同じPython環境を共有することになる。プロジェクトAはDjangoのv3.2、プロジェクトBはv4.2が必要、となったとき同時には満たせない。仮想環境を使えばそれぞれ別の環境に入れられる。

ひよこ ひよこ

activateって何してるの?

ペンギン先生 ペンギン先生

シェルの変数を書き換えて「pythonコマンドとpipコマンドの参照先」を仮想環境内のものに切り替えている。「source .venv/bin/activate」(Mac/Linux)や「.venv\Scripts\activate」(Windows)で有効化できる。

ひよこ ひよこ

conda と venv って何が違うの?

ペンギン先生 ペンギン先生

venvはPython標準の仮想環境ツールでPythonだけを管理する。condaはAnacondaが作ったツールでPythonのバージョン自体を切り替えられるし、C言語で書かれたデータサイエンス系のライブラリバイナリ配布にも対応している。データサイエンス分野ではcondaが定番。

ひよこ ひよこ

Poetryってどう違うの?

ペンギン先生 ペンギン先生

Poetryパッケージマネージャーと仮想環境管理を一体化したツール。pip + venvを別々に使うより依存関係の解決・ロックファイル管理・パッケージ公開が統合されていて便利。最近のPythonプロジェクトではPoetryuvを使うケースが増えている。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
仮想環境って出てきたら「Pythonパッケージをプロジェクトごとに分けて管理する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「virtual environment」 = 仮想の(論理的な)環境
💬 物理的には1台のPCでも、論理的に複数の独立したPython環境を持てるという意味
← 用語集にもどる