venv は、Python 標準ライブラリに入っている仮想環境の作成機能です。 プロジェクトごとに独立した Python 環境を作り、ライブラリのバージョン衝突を避けるために使います。
何をしているのか
python -m venv .venv を実行すると、そのディレクトリの中に Python 本体へのリンクと、そのプロジェクト専用のパッケージ置き場が作られます。有効化(activate)すると、python と pip がその箱の中のものを指すようになります。
つまり venv がやっているのはパスの切り替えです。魔法ではないので、有効化を忘れれば普通にシステム側へインストールされます。
役割を混同しない
| 役割 | 担当 |
|---|---|
| 環境を分ける | venv |
| パッケージを入れる | pip |
| 依存を固定して再現する | ロックファイルを持つツール |
venv は依存解決もロックもしません。ここを期待すると「venv を使っているのに環境が揃わない」という誤解が生まれます。
つまずきやすいところ
- 有効化していないことに気づかない:プロンプトに
(.venv)が出ているか、which python(Windows ならwhere python)で確認する .venvをリポジトリにコミットしてしまう:中身は環境依存のバイナリを含む。.gitignoreに入れる- 移動・リネームすると壊れる:内部に絶対パスを持つため、フォルダごと移すと動かない。作り直す
- エディタが別の環境を見ている:ターミナルでは動くのに補完が効かない場合、エディタ側でインタプリタを選び直す