Pythonの仮想環境とは?初心者向けにわかりやすく解説

Python開発で、仮想環境の理解と活用は必須のスキルです。プロジェクトごとに独立した開発環境を構築し、必要なパッケージを管理できる仮想環境の基本概念から実践的な使い方まで初心者向けに解説します。
標準ツールのvenvから、高機能なvirtualenv、データサイエンス向けのcondaまで、それぞれの特徴を比較しながら、requirements.txtを使った環境共有やVS Codeとの連携など、開発効率を向上させるテクニックをご紹介します。
Contents
Pythonの仮想環境とは?
Pythonの仮想環境は、プロジェクトごとに独立したPython実行環境を作成できる仕組みです。
通常のPython環境では、すべてのプロジェクトが同じパッケージを共有しますが、仮想環境を使うことで、個別の環境を構築できます。
また、プロジェクトごとに必要なパッケージだけをインストールでき、他のプロジェクトへ影響を与えずに開発を進められるため、開発環境をクリーンに維持できます。
venvとの違い
venvはPython 3.3以降に標準搭載された仮想環境作成ツールです。
追加インストールが不要で、シンプルなため、扱いやすいツールです。
# 仮想環境を作成する
# 現在のディレクトリ内にディレクトリ「.venv」として作成する例
python -m venv .venv
# 仮想環境を有効化 (macOS, Linux)
source .venv/bin/activate
# 仮想環境を有効化 (Windows)
.venv\Scripts\activate
# 仮想環境へパッケージを導入
pip install numpy
virtualenvとの違い
virtualenvはvenvよりも高度な機能を持つツールです。
Python 2系でも使用でき、異なるPythonバージョンを指定して環境を作成できます。
# virtualenvをインストール
pip install virtualenv
# .venvという名前で仮想環境を作成する例
virtualenv .venv
# 仮想環境を有効化 (macOS, Linux)
source .venv/bin/activate
# 仮想環境を有効化 (Windows)
.venv\Scripts\activate
# 仮想環境へパッケージを導入
pip install numpy
condaとの違い
condaは、データサイエンス向けのツールで、Python以外の言語も管理できます。
科学計算やAI関連ライブラリの導入が容易なため、データ分析分野で人気があります。
# myenvという名前で仮想環境を作成する例
conda create –name myenv
# 仮想環境を有効化
conda activate myenv
# 仮想環境へパッケージを導入
conda install numpy
# ※ conda自体のインストールは別途インストーラーからおこなってください。
仮想環境の特徴
Python開発にさまざまな恩恵をもたらす仮想環境の特徴を、ご紹介します。
プロジェクトごとの環境管理ができる
仮想環境を使うと、プロジェクトごとに独立した環境を作成できます。例えば、1台のパソコンで異なるバージョンのDjangoを使う複数のプロジェクトも、別々の環境で管理できます。
requirements.txt を使った環境を再現できる
requirements.txtには使用パッケージの一覧が記録され、以下のコマンドで環境を再現できます。
pip install -r requirements.txt
逆に、現在の環境のパッケージ一覧を出力するには下記のコマンドを使用します。
pip freeze > requirements.txt
requirements.txtをコピーするとメンバー間や個人の環境構築で大変便利です。
仮想環境の応用テクニック
本項では、複雑なプロジェクトでも柔軟に対応でき、開発の生産性を向上させる応用的な方法をご紹介します。
プロジェクトごとに異なるPythonバージョンを使う
pyenvを使うと、Python本体のバージョンをプロジェクトごとに切り替えられるため、古いプロジェクトと新規プロジェクトを同時に進行できます。
# pyenvのインストール(macOS)
$ brew install pyenv
# 利用可能なPythonバージョンの確認
$ pyenv install –list
# Python 3.8.10をインストール
$ pyenv install 3.8.10
# プロジェクトディレクトリでPythonバージョンを設定
$ cd myproject
$ pyenv local 3.8.10
# 設定したバージョンで仮想環境を作成
$ python -m venv .venv
特定のディレクトリで自動的に仮想環境を有効化する
direnvを使えば、プロジェクトディレクトリに移動するだけで仮想環境が自動的に有効化されます。
# direnvのインストール(macOS)
$ brew install direnv
# シェルの設定ファイル(.bashrcや.zshrc)に追加
$ echo ‘eval “$(direnv hook bash)”‘ >> ~/.bashrc
# プロジェクトディレクトリに.envrcファイルを作成
$ cd myproject
$ echo ‘source .venv/bin/activate’ > .envrc
$ direnv allow
ディレクトリから出ると無効化されるため、環境の切り替えが簡単です。
pipenvを活用して依存関係を管理
pipenvは仮想環境と依存関係の管理を一元化します。
PipfileとPipfile.lockが依存関係を記録し、環境の再現が可能です。
# pipenvのインストール
$ pip install pipenv
# プロジェクトディレクトリで仮想環境を作成しパッケージをインストール
$ cd myproject
$ pipenv install requests numpy
# 開発環境のみで使用するパッケージをインストール
$ pipenv install pytest –dev
# 仮想環境内でコマンドを実行
$ pipenv run python script.py
# 仮想環境に入る
$ pipenv shell
VS Codeで自動的に仮想環境を認識させる
下記設定でVS Codeは指定した仮想環境を自動的に検出します。
// .venv に作成済みの仮想環境を使用する例
// プロジェクトフォルダに .vscode フォルダを作成しファイル名 settings.json として以下を保存:
{
“python.pythonPath”: “${workspaceFolder}/.venv/bin/python”,
“python.terminal.activateEnvironment”: true
}
統合ターミナルでも仮想環境が自動的に有効になるため、開発がスムーズになります。
まとめ
Python開発で重要な仮想環境を解説しました。
プロジェクトごとの環境分離や、requirements.txtによる環境共有など、開発効率を大きく向上できます。
今日から仮想環境を使って、クリーンな開発環境を整えてください。