Pythonの仮想環境とは、プロジェクトごとに異なるPythonの依存関係(ライブラリやパッケージ)を独立して管理する仕組みです。プロジェクトごとに独立した環境を構築することで、デフォルトのPython環境をクリーンな状態で保持することができます。
この記事では、Pythonの仮想環境を作成するための標準モジュールであるvenv
を使用した仮想環境の作成方法を解説します。
Pythonの仮想環境とは?
Pythonの仮想環境とは、プロジェクトごとに異なるPythonの依存関係(ライブラリやパッケージ)を独立して管理する仕組みです。
仮想環境はなぜ必要?
仮想環境が必要な理由は、環境を分離して各プロジェクトを独立させるためです。
Pythonのプロジェクトでは、標準ライブラリのほかにも、外部ライブラリをインストールすることがあります。


プロジェクトAとBでは、異なるバージョンのライブラリ(LinraryB
)を使用していますね、、、

プロジェクトAでは使用するけど、プロジェクトBでは使用しないライブラリがインストールされてしまっています。逆もまた然り、、、
使用しないライブラリがインストールされていることで、以下のように予期しない問題を引き起こす可能性があります。
- セキュリティリスク
誤って悪意のあるパッケージをインストールした場合、すべてのプロジェクトが影響を受けます。 - パッケージの競合
システム全体に複数バージョンの同じパッケージをインストールすると、どちらかが動作しなくなるなど、競合が発生する可能性があります。 - 開発環境の管理が困難
同じ環境でプロジェクトごと異なるバージョンを管理するため、不要なライブラリの判別が難しく、メンテナンスが困難になります。パッケージ量が多く、環境が重たくなります。
仮想環境を使用することで、これらを回避することができます。
Pythonのプロジェクトごとに仮想環境を構築して、それぞれバージョンの違うライブラリやパッケージをインストールします。プロジェクトで使用しているライブラリやパッケージに限定して管理するため、安全で一貫性のある開発が可能になります。


少しだけ動かしてみたいライブラリがある場合にも、Pythonの仮想環境が役立ちます。不要になった場合は、仮想環境のディレクトリごと削除しましょう。
仮想環境の作成方法
PC環境
- OS: Windows 11 Home
- Python: 3.12.9, 3.13.2
- pip: 25.0.1
仮想環境の作成
シェルやターミナルなど、コマンド実行ツールから仮想環境を作成します。仮想環境名(例:venv_v313
)は、任意の名前を付けることができます。
$ python -m venv venv_v313(任意のフォルダ名)
仮想環境を作成するとき、特定のバージョンを指定することができます。インストール済みのバージョンを使用して、指定のバージョンを仮想環境を作成します。
Windowsでは、py -0
を実行することで、システムにインストールされているPython のバージョン一覧が表示されます。以下の結果から、Python 3.13(デフォルト)とPython 3.12がインストールされていることがわかります。
$ py -0
-V:3.13 * Python 3.13 (64-bit)
-V:3.12 Python 3.12 (64-bit)
py
ランチャーを使用し、Python 3.12を指定して仮想環境を作成します。
$ py -3.12 -m venv venv_v312
仮想環境の有効化して、指定したバージョンで動作することを確認します。
$ .\venv_v312\Scripts\activate
(venv_v312) $ python -V
Python 3.12.9
仮想環境の有効化
コマンドを実行すると仮想環境が有効になります。
$ .\venv_v313\Scripts\activate
以下のようになっていれば、仮想環境の操作が可能です。
(venv_v313) $
# バージョンを確認
(venv_v313) $ python -V
Python 3.13.2
# pipコマンドでパッケージをインストール
(venv_v313) $ pip install パッケージ名
venvが実行できない!?
Windowsの初期設定では、PowerShellのスクリプトの実行が実行ポリシーにより許可されていません。そのためActivate.ps1
が実行できず、仮想環境を有効化できません。
実行ポリシーは、スクリプトの実行を制限して、セキュリティを確保するための仕組みです。実行ポリシーが適切でない場合、以下のセキュリティエラーが表示されます。
$ .\venv_v313\Scripts\activate
.\venv_v313\Scripts\activate : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\Docu
ments\venv_v313\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」を参照してください。
発生場所 行:1 文字:1
+ .\venv_v313\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PowerShellセッションの有効な実行ポリシーを表示するには、Get-ExecutionPolicy
コマンドを使用します。
$ Get-ExecutionPolicy
Restricted
例では、実行ポリシーがRestricted
であり、このポリシーはスクリプト実行が制限されます。
実行ポリシーを変更するには、Set-ExecutionPolicy
コマンドを使用します。Scopeオプションを使用しない場合は、PCの全ユーザーのポリシーが変更されます。
# 現在のPowerShellセッションのポリシー変更
$ Set-ExecutionPolicy RemoteSigned -Scope Process
# 現在のユーザーのポリシー変更
$ Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# PCの全ユーザーのポリシー変更(管理者権限で実行が必要)
$ Set-ExecutionPolicy RemoteSigned
実行ポリシーが変更できたことを、Get-ExecutionPolicy
コマンドで確認します。
$ Get-ExecutionPolicy
RemoteSigned

これで、仮想環境を有効化できるようになります!
List
オプションを使用することで、各スコープの実行ポリシーを優先順位の順に表示できます。
$ Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
実行ポリシーには、5つのスコープがあり、優先順位が高いものが適用されます。以下の表は、それぞれの影響範囲と特徴です。
スコープ | 影響範囲 | 特徴 |
---|---|---|
MachinePolicy | 全ユーザー(グループポリシー) | グループポリシー管理者が設定。ユーザーは変更不可。 |
UserPolicy | 現在のユーザー(グループポリシー) | グループポリシー管理者が設定。ユーザー単位の設定。 |
Process | 現在のPowerShellセッション | 一時的な設定であり、セッションを閉じると元の設定に戻る。 |
CurrentUser | 現在のユーザー | 他ユーザーへの影響がなく、管理者権限なしで変更可能。 |
LocalMachine | 全ユーザー(PC全体) | デフォルトのスコープ。管理者権限で変更可能。 |
- 企業や組織で一括管理
MachinePolicy
,UserPolicy
を使用します。 - 個人PCやPC管理者が管理
Process
,CurrentUser
,LocalMachine
を使用します。
仮想環境の無効化
コマンドを実行すると仮想環境が無効になります。
(venv_v313) $ deactivate
仮想環境の使用例
新規プロジェクトでの仮想環境の作成方法は以下です。
- プロジェクトのディレクトリ作成
- 仮想環境の作成
- 必要なパッケージのインストール
- 現在の環境のパッケージ一覧をrequirements.txtに保存
# プロジェクトのディレクトリ作成
$ mkdir new_project
$ cd new_project
# 仮想環境の作成
$ python -m venv venv
$ .venv\Scripts\activate # Windowsでの仮想環境の有効化
# 必要なパッケージのインストール
(venv) $ pip install -r requirements.txt # 既存の依存関係をインストール
(venv) $ pip install LibraryA==1.0 LibraryB==2.0 LibraryC==3.0
# 現在の環境のパッケージ一覧をrequirements.txtに保存
(venv) $ pip freeze > requirements.txt
おわりに
この記事では、Pythonプロジェクトにおける仮想環境の必要性と標準モジュールvenv
を使用した仮想環境の作成方法を解説いたしました。仮想環境を適切に管理して、開発効率の向上、環境トラブルを最小限に抑えましょう。
仮想環境が必要な理由は、各プロジェクトを独立させ、管理しやすくするためです。開発環境を分離することで、グローバル環境に影響を与えることなく、プロジェクトごとに異なるライブラリやPythonのバージョンを使用できます。
仮想環境は、シェルやターミナルから簡単に作成することができます。