3-1. venv による仮想環境

本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

概要

venv は Python 3.3 以降に標準で含まれている仮想環境作成モジュールで、軽量かつ手軽に環境を分離できます。

背景

必要なもの

  • 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)ディレクトリを追加し、pythonpip の参照先を切り替える。
  • 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 標準搭載で導入不要
  • プロジェクトを汚さず安全にライブラリを導入可能
  • 環境の再現性と保守性が高まる

参考となれば幸いです。