概要
venv は Python 3.3 以降に標準で含まれている仮想環境作成モジュールで、軽量かつ手軽に環境を分離できます。
背景
- Python 3.2 までは
virtualenv
が主流。 - Python 3.3 で
venv
が標準ライブラリとして追加。(リリースノート) - Python 3.5 で
python -m venv
が推奨手法に。
https://docs.python.org/3.13/library/venv.html
>> Changed in version 3.5: The use ofvenv
is now recommended for creating virtual environments.
必要なもの
- Python 3.3 以上がインストールされていること
- ターミナル(Windows の場合 PowerShell か CMD)
- Windows で PowerShell を利用する場合は、スクリプトの実行ポリシーを変更しておくこと
仮想環境の作成方法
仮想環境は以下のコマンドで作成できます。
python -m venv .venv
.venv
は仮想環境を置くディレクトリ名(任意だが venv や .vnenv という名前で作成する慣習になっていることが多い)- 実行すると、
bin/
やScripts/
ディレクトリを含む仮想環境が生成される
Windows で python launcher (py.exe) を利用する場合は以下です。
py -m venv .venv
複数バージョンがインストールされている環境では、バージョンを指定して py -m venv を実行するとそのバージョンの仮想環境が作成されます。
特定バージョンが動作要件である場合などに利用できます。
例)
PS C:\> cd .\python\
PS C:\Python> py --list
-V:3.13 * Python 3.13 (64-bit)
-V:3.12 Python 3.12 (64-bit)
-V:3.11 Python 3.11 (64-bit)
PS C:\Python> py -3.11 -m venv .venv
PS C:\Python> dir
ディレクトリ: C:\Python
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2025/07/05 9:24 .venv
PS C:\Python> python --version
Python 3.13.4
PS C:\Python> .\.venv\Scripts\activate
(.venv) PS C:\Python> python --version
Python 3.11.9
(.venv) PS C:\Python>
Linux や macOS でも 仮想環境作成のコマンドは同様です。(python -m venv .venv)
仮想環境の有効化(activate)
Windows 環境
(PowerShell あるいは ターミナルでの実行の場合)
.venv\Scripts\activate.ps1
(コマンドプロンプトの場合)
.venv\Scripts\activate.bat
Windows だと 単に
.venv\Scripts\activate
と実行した場合は、拡張子の自動補完が働いて、PowerShell の場合は activate.ps1 が実行され、コマンドプロンプトだと activate.bat が実行されます。
Windows 環境の補足
PowerShell ではデフォルトでスクリプトの実行が制限されているので、activate のスクリプトを実行する前に、実行ポリシーを変更します。
エラー例
PS C:\Python> .\.venv\Scripts\activate
.\.venv\Scripts\activate : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Python\.venv\Scripts\Act
ivate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\.venv\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PowerShell のスクリプトの実行ポリシーを変更するには、管理者権限で PowerShell を開いてから Set-ExecutionPolicy RemoteSigned を実行します。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows
PS C:\WINDOWS\system32> Get-ExecutionPolicy
Restricted
PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
PS C:\WINDOWS\system32> Get-ExecutionPolicy
RemoteSigned
PS C:\WINDOWS\system32>
Linux / macOS 環境
source .venv/bin/activate
activate スクリプトの中で行われること
activate
スクリプトは、使用しているシェルに応じて環境変数を一時的に変更することで仮想環境を有効化します。
Windows / Linux / macOS 共通の主な処理:
PATH
に仮想環境のbin/
(Unix)またはScripts/
(Windows)ディレクトリを追加し、python
やpip
の参照先を切り替える。VIRTUAL_ENV
環境変数を定義して、現在の仮想環境のパスを示す。- シェルのプロンプトに仮想環境名(例:
(venv)
)を表示。
Windows の activate.bat
(cmd.exe 用):
set PATH=...
で環境を切り替える。set VIRTUAL_ENV=...
で仮想環境のパスを登録。prompt
で(venv)
を付加。
Windows の Activate.ps1
(PowerShell 用):
$env:PATH
と$env:VIRTUAL_ENV
を設定。deactivate
関数を定義し、環境のリセットを可能にする。
Linux/macOS の activate
(bash/zsh 用):
export PATH=...
により仮想環境のbin/
を先頭に追加。export VIRTUAL_ENV=...
を設定。deactivate
関数を定義して元の環境に戻せるようにする。
仮想環境の無効化
deactivate
パッケージのインストール例
仮想環境内でインストールすると、そのプロジェクトだけに適用されます。
pip install requests
依存関係の書き出しと再現
pip freeze > requirements.txt
pip install -r requirements.txt
venv で作成される仮想環境のイメージ
以下の例では、.venv
ディレクトリに仮想環境を作成し、その中にある Python 実行ファイルを通じて main.py
を実行します。 仮想環境をアクティブにしていれば、main.py
の中で使うライブラリ(例: requests
など)は .venv
にインストールされたものが使われます。すなわち、main.py
は 仮想環境内の Python とパッケージ群を前提に動作する ことになります。
【システム全体の Python】
C:\Program Files\Python311\
├── python.exe ← 通常時に使われる
├── Lib\
│ ├── site-packages\
│ │ └── グローバルパッケージA, B, C(共有)
│ └── …
└── …
↓ C:\Python 配下に 仮想環境 .venv を作成 & activate
【プロジェクト専用仮想環境】
C:\Python\
├── main.py ← プロジェクトのメインスクリプト
├── requirements.txt ← 仮想環境の依存パッケージリスト
└── .venv\ ← このプロジェクト専用の仮想環境
├── Scripts\
│ ├── activate.bat / Activate.ps1
│ └── python.exe ← main.py 実行時に使う
└── Lib\
└── site-packages\
└── requests, numpy など仮想環境専用パッケージ
.venv を有効化すると
💡 実行コマンド python や pip の参照先が システム全体(C:\Program Files…)→ .venv\Scripts\python.exe に切り替わる
🚫 システム全体の Python やパッケージには一切影響なし
✅ .venv 内にだけパッケージがインストールされる
venv のメリット
- Python 標準搭載で導入不要
- プロジェクトを汚さず安全にライブラリを導入可能
- 環境の再現性と保守性が高まる
参考となれば幸いです。