仮想環境したい(venv

// プロジェクトルートを作成する/移動する
$ mkdir -p path/to/your_project
$ cd path/to/your_project

// 仮想環境を作成する
$ python3 -m venv .venv

// 仮想環境を有効にする
$ source .venv/bin/activate
(.venv) $

// 仮想環境を無効にする
(.venv) $ deactivate
$

venvパッケージで、仮想環境を作成できます。 Python3.3以降に付属する標準モジュールです。 コマンドではpython3 -m venvの形でモジュールとして呼び出す必要があります。

注釈

Pythonのパッケージは、プロジェクトごとに異なるバージョンが必要になることがあります。 システム全体にインストールすると、複数のプロジェクト間でバージョンの競合が起きる可能性があります。

この問題を避けるため、最近のPython環境では、システムグローバルにパッケージをインストールすることは非推奨となっています。 代わりに、仮想環境を使って各プロジェクトに独立した環境を用意することが推奨されています。 これにより、プロジェクト間の依存関係の競合を防ぎ、環境を再現性よく管理できます。

バージョンを切り替えたい

// Python3.11の仮想環境
$ python3.11 -m venv .venv
$ source .venv/bin/activate
(.venv) $ python --version
Python 3.11

// Python3.11の仮想環境
$ python3.12 -m venv .venv
$ source .venv/bin/activate
(.venv) $ python --version
Python 3.12

venvモジュールを呼び出すときに時に python3.11 -m venvpython3.12 -m venv、 のようにPythonの実行環境のバージョンを指定します。

注釈

venvモジュール自体には、Python実行環境の切り替え機能はありません。

最近では、これらの機能が統合された uvパッケージ を利用するのがオススメです。

他ツールと比較したい

venvとその他の仮想環境・パッケージ管理ツールを比較してみました。 目的やプロジェクトの規模に応じて適切なツールを選ぶことが重要です。 ただし、これからはじめるプロジェクトはvenvuvを選ぶのがよいと思います。

ツール名

推奨度

用途

特長

venv

★★★★★

基本的な仮想環境

Python3.3以降の標準。シンプルで軽量。初心者向け

uv

★★★★★

統合的なパッケージ管理

オススメの最新ツール。venvpipの機能を統合して高速化

poetry

★★★★

パッケージ開発

複雑なプロジェクトやパッケージ公開時に便利

pyenv

★★★

Python実行環境管理

複数Pythonバージョンの管理に特化。venvと併用

virtualenv

★★★

高度なカスタマイズ

venvより柔軟。現在はuvの方がオススメ

pipenv

★★

プロジェクト依存管理

Pipfileを使用。開発・メンテナンスが減少傾向

ツールへの依存をできるだけ減らしたい場合は、 標準モジュールのvenvで仮想環境を作成し、pipでパッケージをインストールする組み合わせがベストです。

モダンなプロジェクト管理をしたい場合はuvもしくはpoetryを利用すると便利です。 これらのツールはpyproject.tomlで依存関係を管理できるため、 環境構築を効率化し、再現性を高めることができます。 複数のPythonバージョンを扱う必要がある場合は、実行環境と仮想環境を一括管理できるuvがオススメです。

注釈

virtualenvはPython2系とPython3系が混在する時期に活躍したようですが、 現在はvenvで十分なようです。 pipenvは2018年ころに人気がありましたが、最近は開発・メンテナンスが停滞気味のようなので、 poetryuvを使うことをオススメします。

また、pyenvでPythonのバージョンを管理して、 venvで仮想環境を作成する組み合わせもあるようですが、 こちらもuvが断然オススメです。