【かそうかんきょう】

仮想環境(Python) とは?

最終更新:
💡 プロジェクトごとに、Pythonの道具箱を分ける

Pythonのパッケージをプロジェクトごとに分ける環境。venvの作成、シェル別の有効化、直接実行、再作成と仮想マシンとの違いを解説します。

📌 このページのポイント
Python仮想環境:道具箱を分ける基になるPythonvenvで環境を作るプロジェクトA環境のPythonA用のパッケージプロジェクトB環境のPythonB用のパッケージ有効化、またはPythonのパスで選ぶOS全体を分ける仮想マシンとは別
矢印は環境を作る関係です。既定ではパッケージの置き場を分けますが、システム側も使える設定があります。OSやセキュリティの隔離を示す図ではありません。
ひよこ ひよこ
Pythonの仮想環境は、何を分けるの?
ペンギン先生 ペンギン先生
プロジェクトで使うパッケージのインストール先を分けるよ。別のプロジェクトで違うバージョンが必要なとき、それぞれの環境で管理できる。venvは、既存のPythonを基に環境を作る標準ライブラリの機能だ。
ひよこ ひよこ
どうやって作る?
ペンギン先生 ペンギン先生
使いたいPythonでpython -m venv .venvを実行する例があるよ。.venvは作成先のフォルダ名で、別の名前にもできる。WindowsのPython Launcherを使うならpy -m venv .venvという指定もできる。実行したPythonが環境の基になるんだ。
ひよこ ひよこ
有効化のコマンドは、どこでも同じ?
ペンギン先生 ペンギン先生
シェルによって違う。PowerShellなら.\.venv\Scripts\Activate.ps1、bashやzshならsource .venv/bin/activateが例だ。有効化すると、そのシェルのPATHを調整して環境のPythonを選びやすくする。作成と有効化は別の操作だよ。
ひよこ ひよこ
有効化しないと、使えないの?
ペンギン先生 ペンギン先生
環境内のPythonをパスで指定すれば使える。Windowsなら.\.venv\Scripts\python.exe -m pip --versionで、その環境のpipを確認できるよ。スクリプトやIDEでも、使うPythonを明示することが大切だ。
ひよこ ひよこ
フォルダをコピーすれば、同じ環境になる?
ペンギン先生 ペンギン先生
venvの環境は、基本的に再作成して使うものだよ。生成されたフォルダはGit管理から除き、必要なパッケージの情報を残す。依存するPythonの版やOSなども合わせて確認する。仮想環境だけで、どのPCでも同じ結果になると保証されるわけではないんだ。
もっと詳しく知りたい人へ

仮想マシンや、セキュリティの隔離と同じ?

venvが主に分けるのはPythonのパッケージ環境です。別のOSを起動する仮想マシンではなく、コードがPCのファイルへアクセスするのを防ぐ仕組みでもありません。何を隔離したいかによって、使う仕組みを選びます。

既定なら、システムのパッケージは見えない?

venvでは既定で、システム側のsite-packagesを分けます。ただし--system-site-packagesを付けて作成すると、システム側も利用できる設定になります。依存関係を再現したいときは、その設定やPythonの版、依存情報も確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「仮想環境」って出てきたら「Pythonのパッケージをプロジェクトごとに分ける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Virtual Environment」 = Pythonのパッケージ環境を論理的に分けたもの
💬 ここではPythonのvenvなどが作る環境を指します。OSや機器全体を仮想化する仮想マシンとは、分ける対象が違います。

参考資料

← 用語集にもどる