はじめに
Pythonで開発を始めると、かなり早い段階で出てくるのが venv です。
最初は少し地味に見えます。
しかし、Python開発において venv はかなり重要です。
むしろ、これを知らずに開発を進めると、あとで環境構築の沼に沈みます。
この記事では、Python初心者向けに venv の役割、使い方、実務での基本的な流れを整理します。
venvとは
venv は、Pythonの仮想環境を作成するための標準機能です。
仮想環境とは、プロジェクトごとにPythonのライブラリを分けて管理する仕組みです。
たとえば、以下のような状況を考えます。
project-a → Flask 2.x が必要
project-b → Flask 3.x が必要
このとき、PC全体に直接ライブラリを入れてしまうと、バージョンの衝突が起きる可能性があります。
PC全体のPython環境
└── Flask 2.x? Flask 3.x?
どちらのプロジェクトに合わせるべきか分からなくなります。
そこで venv を使います。
project-a/.venv → Flask 2.x
project-b/.venv → Flask 3.x
このように、プロジェクトごとにライブラリ環境を分離できます。
なぜvenvが必要なのか
venv を使う理由は、大きく3つあります。
1. ライブラリのバージョン衝突を防げる
Python開発では、プロジェクトごとに必要なライブラリやバージョンが異なります。
たとえば、あるプロジェクトでは古いバージョンのライブラリが必要で、別のプロジェクトでは新しいバージョンが必要になることがあります。
venv を使えば、それぞれのプロジェクトで別々の環境を持てます。
2. PC本体のPython環境を汚さない
仮想環境を使わずに pip install を繰り返すと、PC全体のPython環境にライブラリがどんどん入っていきます。
すると、あとから
このライブラリ、どのプロジェクトで使っていたんだっけ?
という状態になります。
venv を使えば、ライブラリはプロジェクト内の仮想環境に閉じ込められます。
まさにプロジェクト専用の小部屋です。
3. 他の人と同じ環境を再現しやすい
チーム開発やQiita記事では、他の人が同じ環境を再現できることが大切です。
requirements.txt と組み合わせることで、必要なライブラリを簡単に共有できます。
pip freeze > requirements.txt
別の人は以下のコマンドで同じライブラリをインストールできます。
pip install -r requirements.txt
venvの基本的な使い方
ここからは、実際に venv を使う流れを説明します。
1. プロジェクトフォルダを作成する
まず、作業用のフォルダを作ります。
mkdir my-python-project
cd my-python-project
2. 仮想環境を作成する
以下のコマンドで仮想環境を作成します。
python3 -m venv .venv
実行すると、プロジェクトフォルダ内に .venv というフォルダが作成されます。
my-python-project/
└── .venv/
.venv の中に、このプロジェクト専用のPython環境が作られます。
3. 仮想環境を有効化する
MacやLinuxの場合は、以下のコマンドで有効化します。
source .venv/bin/activate
有効化されると、ターミナルの先頭に (.venv) のような表示が出ます。
(.venv) user@mac my-python-project %
この状態になっていれば、仮想環境が有効です。
4. ライブラリをインストールする
試しに Flask をインストールしてみます。
pip install flask
インストールされたライブラリを確認するには、以下を実行します。
pip list
このとき、インストールされたライブラリはPC全体ではなく、.venv の中に入ります。
5. requirements.txtを作成する
現在の仮想環境に入っているライブラリ一覧を保存します。
pip freeze > requirements.txt
すると、以下のようなファイルが作成されます。
my-python-project/
├── .venv/
└── requirements.txt
requirements.txt の中身は、たとえば以下のようになります。
blinker==1.9.0
click==8.1.8
Flask==3.1.0
itsdangerous==2.2.0
Jinja2==3.1.6
MarkupSafe==3.0.2
Werkzeug==3.1.3
このファイルがあると、他の環境でも同じライブラリを再現できます。
6. requirements.txtからライブラリを復元する
別のPCや新しい環境でライブラリを入れる場合は、以下を実行します。
pip install -r requirements.txt
これで requirements.txt に書かれたライブラリがまとめてインストールされます。
7. 仮想環境を終了する
作業が終わったら、以下のコマンドで仮想環境を終了できます。
deactivate
ターミナルの (.venv) 表示が消えれば、仮想環境から抜けています。
よく使うコマンドまとめ
# プロジェクトフォルダ作成
mkdir my-python-project
cd my-python-project
# 仮想環境作成
python3 -m venv .venv
# 仮想環境を有効化
source .venv/bin/activate
# ライブラリをインストール
pip install ライブラリ名
# インストール済みライブラリを確認
pip list
# requirements.txtを作成
pip freeze > requirements.txt
# requirements.txtからインストール
pip install -r requirements.txt
# 仮想環境を終了
deactivate
VSCodeでvenvを使う場合
VSCodeを使っている場合は、仮想環境を作成しただけでは不十分なことがあります。
VSCodeが別のPythonを見ている場合があるためです。
その場合は、Pythonインタプリタを選択します。
手順は以下です。
Cmd + Shift + P
↓
Python: Select Interpreter
↓
.venv/bin/python を選択
これでVSCode上でも .venv のPython環境を使えるようになります。
ここを忘れると、
ターミナルでは動くのに、VSCodeでは動かない
という初心者泣かせの現象が起きます。
Python開発における小さな落とし穴です。
ただし、踏むとわりと深いです。
Git管理するときの注意点
.venv フォルダはGit管理に含めません。
仮想環境の中には大量のライブラリファイルが入っているため、そのままGitに入れるとリポジトリが重くなります。
そのため、.gitignore に以下を追加します。
.venv/
Git管理するのは .venv ではなく、requirements.txt です。
Gitに含めるもの → requirements.txt
Gitに含めないもの → .venv/
サンプル構成
最終的には、以下のような構成になります。
my-python-project/
├── .venv/
├── requirements.txt
├── main.py
└── .gitignore
.gitignore の例です。
.venv/
__pycache__/
*.pyc
main.pyを作って動作確認する
簡単なPythonファイルを作成します。
print("Hello, venv!")
仮想環境を有効化した状態で実行します。
python main.py
実行結果です。
Hello, venv!
これで、仮想環境を使ったPython実行ができました。
まとめ
venv は、Python開発における仮想環境を作るための標準機能です。
ポイントをまとめると、以下の通りです。
・プロジェクトごとにライブラリを分けられる
・PC本体のPython環境を汚さない
・ライブラリのバージョン衝突を防げる
・requirements.txtと組み合わせると環境を再現しやすい
・.venvはGit管理しない
Pythonでプロジェクトを作るときは、まず venv を作る。
これは、開発の足場を固めるための基本動作です。
コードを書く前に環境を整える。
古くから言われる「段取り八分」に近い考え方です。
Python開発でも、よい段取りはよいコードへの第一歩です。