venvによるPython仮想環境の作成
本記事の概要
本記事では、Windows環境におけるvenvを使用したPythonの仮想環境の作成から削除までの一連の手順を解説します。具体的には、venvによる仮想環境の作成、環境の有効化(activate)、パッケージの一括インストール、Visual Studio Codeでの開発環境設定、環境の無効化(deactivate)、そして安全な仮想環境の削除方法までを説明します。
前提とする環境
本記事において前提としている環境を次に示します。
- OS: Windows 11
- バージョン: 23H2
- 64ビットオペレーティングシステム、x64ベースプロセッサ
- Visual Studio Code: 1.95.3
仮想環境の作成とactivate~deactivate
仮想環境の作成とactivate~deactivateまでの手順を説明します。
まず、VSCodeのターミナルを起動して、次のコマンドを順番に実行し、仮想環境を作成します。
# 仮想環境を作成するディレクトリに移動する(パスは自身の環境に合わせる)
cd C:\Users\username\Projects\my-project
# 仮想環境を作成する
py -m venv .venv
次に、仮想環境の有効化のためにactivate
を実行します。このactivate
の実行により、自動的に環境変数PATHが変更されます。
# 仮想環境の有効化
.venv\Scripts\activate
パッケージの一括インストールの準備としてrequirements.txt
を作成します。
今回は例として次のような構成とします。
numpy==1.26.3
pandas==2.1.3
matplotlib==3.8.1
作成したrequirements.txt
をプロジェクトディレクトリ直下に配置します。
配置が完了したらrequirements.txt
のパッケージを一括インストールします。
ターミナル上で次のコマンドを実行します。
# パッケージを一括インストール
py -m pip install -r requirements.txt
# 指定通りインストールされていることを確認
pip list
VSCode上でコーディング等の作業を行います。
今回は例として以下のsample_plot.py
を作成します。
import matplotlib.pyplot as plt
import numpy as np
# データの生成
x = np.linspace(-5, 5, 100)
y1 = np.sin(x)
y2 = np.sin(2 * x)
# プロットの作成
plt.figure(figsize=(6, 4))
plt.plot(x, y1, label="Sin(x)", color="lightblue")
plt.plot(x, y2, label="Sin(2x)", color="lightgreen")
# グラフの設定
plt.title("Sine Wave Plot")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True, axis="x")
plt.legend(loc="upper right")
# グラフの表示
plt.show()
作業が完了したら、次のコマンドを実行します。
python sample_plot.py
正常に実行されるとグラフが表示されます。
作業中にパッケージの追加インストールが必要になった場合は次のコマンドを実行します。
# 例としてseabornをインストールする
pip install seaborn
# requirements.txtを更新する
py -m pip freeze > requirements.txt
作業が完了したら、最後にターミナル上でdeactivateを実行します。
deactivate
作成した仮想環境の削除
仮想環境の削除は、単純にディレクトリを削除するだけでできますが安全を考慮して以下の手順を踏むことが推奨されます。まず、削除対称の仮想環境が有効化されている場合はdeactivate
コマンドで無効化し、使用中の環境を誤って削除することを防ぎます。その後、rmdir
コマンドでディレクトリを削除します。
deactivate
rmdir .venv
まとめ
本記事では、venvを使用した仮想環境の作成、requirements.txtによるパッケージの一括インストール、Visual Studio Codeでの開発環境設定、安全な仮想環境の削除までの一連の流れを解説しました。これらの手順を理解することで、プロジェクトごとに独立した開発環境を管理することができます。
参考記事
Discussion