venv入門:Python仮想環境でプロジェクトを安全に分ける方法

基礎知識

Pythonで開発を始めると、ライブラリのバージョン違いや依存関係の衝突に悩まされることがあります。
そんなときに役立つのが、Python標準の仮想環境ツール venv(ブイエンブ) です。
この記事では、mac・Windows共通で使える最もシンプルなvenvの使い方を紹介します。

venvとは何か

venv は「Virtual Environment(仮想環境)」の略で、1つのプロジェクト専用に独立したPython環境を作る仕組みで、バージョン3.3以降で標準モジュールとして組み込まれました。
同じPC上に複数のプロジェクトがあっても、ライブラリのバージョンを干渉させず安全に管理できます。

たとえば、プロジェクトAではStable Audio Openの検証用にPyTorch 2.1を使用し、プロジェクトBではOpenAI Whisperを動かすためにPyTorch 1.13を使いたい場合、そのまま同じ環境に入れてしまうと依存ライブラリが競合して動かなくなることがあります。

こうしたときにvenvを使えば、AとBそれぞれに独立したPython環境を作り、互いに干渉せずに動作させることができます。

venvのメリット

venvの最大の利点は「環境が壊れないこと」です。
グローバル(システム全体)にライブラリを入れると、別のプロジェクトにも影響が出てしまいます。
しかしvenvを使えば、プロジェクトごとに独立した環境が作られるため、依存関係を完全に分離できます。

また、後で別の開発者が同じ環境を再現することも簡単です。
これは再現性(Reproducibility)と呼ばれ、チーム開発やAI実験ではとても重要な考え方です。

venvの基本構造

venvを作ると、プロジェクトフォルダの中に .venv というディレクトリが生成されます。
その中には、Pythonの実行ファイルとライブラリのコピーが含まれます。
つまり「自分専用のPython」がプロジェクトの中にできるイメージです。

project/
├── .venv/
├── main.py
└── requirements.txt

.venv はPython実行環境を丸ごとコピーして保持します。重いフォルダなので、Gitなどのバージョン管理には含めず、.gitignore に指定しておきましょう。

不要になった場合は.venvフォルダを削除します。再構築も同じ手順を繰り返せばOKです。

venvの作り方(mac / Linux)

まず、使用するPythonをpyenvなどで選んでから、以下を実行します。

$ python -m venv .venv
$ source .venv/bin/activate

最初のコマンドで仮想環境を作成し、
2行目でその環境を有効化(activate)します。

有効化すると、プロンプトの先頭に (venv) などが表示され、
以降の pip install はすべてこの仮想環境内にインストールされます。

無効化したいときは次のコマンドです。
作業が完了して元のPythonを参照する必要がなければ、ターミナルをそのまま閉じてもOKです。

$ deactivate

venvの作り方(Windows)

PowerShellまたはCMDで次のように実行します。

$ python -m venv .venv
$ .\.venv\Scripts\Activate.ps1

初回はPowerShellの実行ポリシーを変更する必要があります。

$ Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

これで、PowerShellが.ps1スクリプトの実行を許可し、venvを問題なく有効化できます。

無効化したいときは次のコマンドです。
作業が完了して元のPythonを参照する必要がなければ、PowerShellをそのまま閉じてもOKです。

$ deactivate

venvでライブラリを管理する

仮想環境を有効にした状態で、必要なライブラリをpipでインストールします。

$ python -m pip install requests

すでにインストールしたライブラリ一覧を保存したい場合は次のコマンドを使います。

$ python -m pip freeze > requirements.txt

他の環境で同じ設定を再現したいときは、このファイルを使ってインストールできます。

$ python -m pip install -r requirements.txt

こうしておくことで、他の開発者や別マシンでもまったく同じ環境を再構築できます。

pyenvとの違いと組み合わせ

よく混同されますが、pyenvはPython本体を切り替えるツール
venvはその中でライブラリを分ける仕組みです。
どちらも役割が異なり、併用することで最も安定した環境を作れます。

$ pyenv local 3.11.9
$ python -m venv .venv
$ source .venv/bin/activate

この順番で作ると、「3.11.9のPython環境の中に専用のvenv」を作る形になります。
AIモデルや音楽生成など複数のプロジェクトを扱う場合に最適です。

よくある質問(FAQ)

Q. venvとAnacondaの違いは?
→ venvはPython標準の軽量な仮想環境、Anacondaはデータ分析用ライブラリを含む大型環境です。
小規模開発やWebアプリにはvenv、科学計算・AI研究にはAnacondaが向きます。

Q. venvのフォルダ名は .venv でないとダメ?
→ 任意ですが、.venv が一般的です。VS Codeなど多くのツールが自動認識します。

Q. 既存プロジェクトにvenvを追加したいときは?
→ フォルダに移動して python -m venv .venv を実行すればOKです。既存コードはそのまま使えます。

参考リンク

まとめ

venvはPython開発の「安全装置」です。
プロジェクトごとに環境を分けることで、依存関係の衝突を防ぎ、いつでも同じ状態を再現できます。
開発初期からvenvを導入しておくことで、将来のトラブルを大幅に減らせます。

タイトルとURLをコピーしました