Python:仮想環境
Pythonの仮想環境について、作成・利用・確認・再現・削除までの資料です。
Python 3.11以降を想定しています。
目次
- 仮想環境とは
- 何が分離され、何が分離されないか
- 仮想環境のメリット
-
venvによる作成方法 - 有効化・無効化
- 仮想環境の使い方
- 仮想環境を確認する方法
- 依存関係の保存と再現
- 仮想環境の種類・関連ツール
- 実行できる確認コード
- よくあるエラーと確認手順
- まとめ
1. 仮想環境とは
**仮想環境(virtual environment/バーチャル・エンバイロメント)**は、Pythonプロジェクトごとに、使用するPython実行環境と外部パッケージの導入先を分ける仕組みです。
PC全体のPython
├─ プロジェクトA
│ └─ .venv
│ └─ requests 2.x
│
└─ プロジェクトB
└─ .venv
└─ requests 3.x
同じPC上でも、プロジェクトごとに異なるパッケージやバージョンを利用できます。
一言で表すと
仮想環境は、プロジェクト専用のPythonと
site-packagesを用意し、外部パッケージの導入先を分ける仕組みです。
略語・用語
| 用語 | 読み方 | 意味 |
|---|---|---|
| CLI | シー・エル・アイ | Command Line Interface:コマンドで操作する画面 |
| venv | ブイ・エンブ/ベンブ | Python標準の仮想環境作成機能 |
| PyPI | パイ・ピー・アイ | Python Package Index:配布パッケージの公開場所 |
| pip | ピップ | Python配布パッケージのインストールツール |
| PATH | パス | コマンド実行時にプログラムを探す場所の一覧 |
| IDE | アイ・ディー・イー | Integrated Development Environment:統合開発環境 |
2. 何が分離され、何が分離されないか
主に分離されるもの
- 仮想環境で使用するPython実行ファイルへの参照
-
pipでインストールした外部パッケージ - パッケージのバージョン
- 仮想環境固有の
site-packages - 仮想環境固有のコマンド群
通常は分離されないもの
- OSそのもの
- CPU・メモリ・ネットワーク
- システム上のファイル
- OSへインストールされた外部プログラム
- データベースやブラウザなどの別プロセス
- 環境変数のすべて
仮想マシン・コンテナとの違い
| 仕組み | 主な分離対象 | 重さ | 例 |
|---|---|---|---|
| Python仮想環境 | Pythonパッケージと実行環境 | 軽い |
venv、virtualenv
|
| コンテナ | アプリ実行環境、ファイルシステム、プロセスなど | 中程度 | Docker |
| 仮想マシン | OS全体 | 重い | VirtualBox、VMware |
Python仮想環境は、OSを仮想化するものではありません。プロジェクト専用のPythonパッケージ環境を作る軽量な仕組みです。
3. 仮想環境のメリット
3-1. プロジェクト間の競合を防ぐ
プロジェクトA:Django 5系
プロジェクトB:Django 6系
仮想環境が別なら、互いのバージョンを上書きしません。
3-2. 必要なパッケージだけを管理できる
プロジェクトごとの依存関係が明確になります。
python -m pip list
3-3. 他のPCやCIで再現しやすい
python -m pip freeze > requirements.txt
別環境:
python -m pip install -r requirements.txt
3-4. グローバル環境を汚しにくい
PC全体のPythonへ多数のパッケージを直接導入せずに済みます。
3-5. 削除・作り直しが簡単
仮想環境ディレクトリを削除し、依存関係ファイルから再作成できます。
一言
仮想環境を使うと、プロジェクトごとにパッケージとバージョンを分けられるため、競合を防ぎ、同じ環境を再現しやすくなります。
4. venvによる作成方法
venvはPython標準ライブラリです。通常、追加インストールは不要です。
4-1. Pythonの場所とバージョンを確認
python --version
python -c "import sys; print(sys.executable)"
※ macOS / Linux 環境でpythonコマンドが見つからない・エラーになる場合は、python3に読み替えて実行してください。
Windowsでpythonが見つからない場合:
py --version
py -c "import sys; print(sys.executable)"
4-2. プロジェクトディレクトリを作る
mkdir sample_project
cd sample_project
4-3. .venvを作る
python -m venv .venv
WindowsのPython Launcherを使う場合:
py -m venv .venv
作成後のイメージ:
sample_project/
└─ .venv/
├─ Scripts/ または bin/
├─ Lib/ または lib/
└─ pyvenv.cfg
仮想環境名を.venvにする理由
- プロジェクト直下にあることが分かりやすい
- VS Codeなどが検出しやすい
- 隠しディレクトリ扱いになり、ソースと区別しやすい
-
.gitignoreへ追加しやすい
名前は自由です。
python -m venv venv
python -m venv env
python -m venv .python-env
5. 有効化・無効化
仮想環境を**有効化(activate/アクティベート)**すると、現在のシェルのPATHが一時的に変更され、仮想環境内のpythonやpipが優先されます。
Windows PowerShell
.\.venv\Scripts\Activate.ps1
Windows Command Prompt
.venv\Scripts\activate.bat
Git Bash(Windows)
source .venv/Scripts/activate
macOS・Linux
source .venv/bin/activate
有効化後の表示例
(.venv) C:\workspace\sample_project>
無効化
どのOSでも、通常は次のコマンドです。
deactivate
有効化は必須ではない
有効化せず、仮想環境のPythonを直接指定することもできます。
Windows:
.venv\Scripts\python.exe app.py
.venv\Scripts\python.exe -m pip list
macOS・Linux:
.venv/bin/python app.py
.venv/bin/python -m pip list
Jenkinsなどの自動処理では、直接パスを指定すると、どのPythonを使うか明確になります。
6. 仮想環境の使い方
基本の流れ
1. プロジェクトへ移動
2. 仮想環境を作る
3. 仮想環境を有効化する
4. pipを更新する
5. 必要なパッケージを入れる
6. プログラム・テストを実行する
7. 依存関係を記録する
8. 作業終了時に無効化する
コマンド一式
# 1. 仮想環境を作成
python -m venv .venv
# 2. 仮想環境を有効化
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
# macOS・Linux・Git Bashでは、環境に応じたsourceコマンドを使う。
# 3. pipの対象を確認
python -m pip --version
# 4. pipを更新
python -m pip install --upgrade pip
# 5. パッケージを導入
python -m pip install requests
# 6. 一覧を確認
python -m pip list
# 7. プログラムを実行
python app.py
# 8. テストを実行する例
python -m unittest
# 9. 依存関係を記録
python -m pip freeze > requirements.txt
# 10. 無効化
deactivate
なぜpipではなくpython -m pipを使うのか
python -m pip install requests
この形式では、先頭のpythonに対応するpipを実行します。
今使うpython
↓
そのPythonに属するpip
↓
その環境のsite-packagesへ導入
別のPythonへ誤って導入する事故を減らせます。
7. 仮想環境を確認する方法
7-1. 実行中のPython
python -c "import sys; print(sys.executable)"
出力例:
C:\workspace\sample_project\.venv\Scripts\python.exe
7-2. 仮想環境かどうか
import sys
is_virtual_environment = sys.prefix != sys.base_prefix
print(is_virtual_environment)
仮想環境内の実行結果:
True
| 属性 | 内容 |
|---|---|
sys.prefix |
現在の実行環境の基準ディレクトリ |
sys.base_prefix |
元となったPythonの基準ディレクトリ |
7-3. Pythonコマンドの探索先
Windows:
where python
macOS・Linux・Git Bash:
which python
7-4. pipの対象
python -m pip --version
表示例:
pip 25.x from C:\workspace\sample_project\.venv\Lib\site-packages\pip (python 3.x)
7-5. 導入済みパッケージ
python -m pip list
python -m pip show requests
python -m pip check
8. 依存関係の保存と再現
requirements.txtを作る
python -m pip freeze > requirements.txt
例:
requests==2.32.5
urllib3==2.5.0
バージョンは例です。実際の出力は実行時点の環境によって変わります。
別環境で再現する
python -m venv .venv
仮想環境を有効化した後:
python -m pip install -r requirements.txt
python -m pip check
Gitへ登録するもの・しないもの
通常は次のようにします。
登録する
├─ ソースコード
├─ requirements.txt
├─ pyproject.toml
└─ README.md
登録しない
└─ .venv/
.gitignore:
.venv/
__pycache__/
*.py[cod]
仮想環境をコピーしない理由
- OSごとに内部パスや実行ファイルが異なる
- 絶対パスを含むことがある
- ファイル数が多い
- 依存関係ファイルから再作成できる
削除・再作成
無効化してから、.venvディレクトリを削除します。
Windows PowerShell:
Remove-Item -Recurse -Force .venv
macOS・Linux・Git Bash:
rm -rf .venv
再作成:
python -m venv .venv
python -m pip install -r requirements.txt
rm -rfや再帰削除は、対象パスを必ず確認してから実行します。
9. 仮想環境の種類・関連ツール
「仮想環境を作るだけのツール」と「依存関係やプロジェクト全体を管理するツール」を分けて考えます。
比較表
| ツール | 読み方 | 主な役割 | 代表コマンド |
|---|---|---|---|
venv |
ブイ・エンブ/ベンブ | Python標準の仮想環境作成 | python -m venv .venv |
virtualenv |
バーチャルエンブ | 高機能な仮想環境作成ツール | python -m virtualenv .venv |
| uv | ユーブイ | 高速なパッケージ・プロジェクト・環境管理 |
uv venv、uv sync
|
| Poetry | ポエトリー | 依存関係、パッケージ化、仮想環境管理 |
poetry install、poetry run
|
| Pipenv | ピップエンブ |
Pipfileを使う依存関係・環境管理 |
pipenv install、pipenv run
|
| Conda | コンダ | Python以外も含むパッケージ・環境管理 |
conda create、conda activate
|
9-1. venv
標準機能で、まず覚える基本です。
python -m venv .venv
向いている場面:
- 一般的なPython学習
- Webアプリ
- テスト自動化
- 小〜中規模プロジェクト
-
requirements.txtやpyproject.tomlと組み合わせる場合
9-2. virtualenv
追加導入します。
python -m pip install virtualenv
python -m virtualenv .venv
venvより広いPythonバージョンへの対応や追加機能が必要な場合に使われます。
9-3. uv
uv venv
uv add requests
uv sync
uv run python app.py
- 仮想環境作成
- 依存関係追加
- ロックと同期
- コマンド実行
をまとめて扱えます。
9-4. Poetry
poetry init
poetry add requests
poetry install
poetry run python app.py
poetry env info
pyproject.tomlを中心に、依存関係管理・パッケージ作成・仮想環境を扱います。
9-5. Pipenv
pipenv install requests
pipenv run python app.py
pipenv shell
Pipfileとロックファイルを使って環境を管理します。
9-6. Conda
conda create --name sample-env python=3.13
conda activate sample-env
conda install numpy
conda env list
conda deactivate
conda env remove --name sample-env
CondaはPythonパッケージだけでなく、ネイティブライブラリやPython本体なども管理できます。データ分析・科学技術計算で利用されることがあります。
選び方の目安
まず基礎を覚える
→ venv + pip
高速な統合ツールを採用するプロジェクト
→ uv
パッケージ公開や依存関係管理を統合したい
→ Poetry
Pipfileを採用している
→ Pipenv
Python以外のバイナリ依存もまとめて管理したい
→ Conda
10. 実行できる確認コード
environment_info.py:
from __future__ import annotations
import site
import sys
from pathlib import Path
def main() -> None:
"""現在のPython環境に関する基本情報を表示する。"""
executable = Path(sys.executable)
is_virtual_environment = sys.prefix != sys.base_prefix
print(f"Python: {sys.version_info.major}.{sys.version_info.minor}")
print(f"仮想環境: {is_virtual_environment}")
print(f"実行ファイル名: {executable.name}")
print(f"prefixとbase_prefixが同じ: {sys.prefix == sys.base_prefix}")
print(f"ユーザーsite有効: {site.ENABLE_USER_SITE}")
if __name__ == "__main__":
main()
仮想環境内で実行:
python environment_info.py
実行結果の例:
Python: 3.13
仮想環境: True
実行ファイル名: python.exe
prefixとbase_prefixが同じ: False
ユーザーsite有効: False
macOS・Linuxでは、実行ファイル名が次のようになる場合があります。
実行ファイル名: python
Pythonバージョンや
site.ENABLE_USER_SITEの値は環境によって変わります。コードはその環境の実際の情報を出力します。
11. よくあるエラーと確認手順
11-1. 有効化したのに別のPythonを使っている
確認:
python -c "import sys; print(sys.executable)"
python -m pip --version
11-2. PowerShellでスクリプト実行が拒否される
表示例:
running scripts is disabled on this system
組織のセキュリティルールを確認してください。自分の管理端末で一時的に現在のプロセスだけ許可する例:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\.venv\Scripts\Activate.ps1
業務端末では、自己判断で実行ポリシーを変更せず、管理者・手順書へ確認します。
11-3. ModuleNotFoundError
ModuleNotFoundError: No module named 'requests'
確認順:
python -c "import sys; print(sys.executable)"
python -m pip show requests
python -m pip list
未導入なら:
python -m pip install requests
11-4. 仮想環境をGitへ入れてしまった
.gitignoreへ追加:
.venv/
すでに追跡済みの場合:
git rm -r --cached .venv
--cachedを付けると、通常、作業フォルダの実体は残し、Gitの追跡対象から外します。
11-5. 仮想環境を別の場所へ移動した
仮想環境は移動・コピーではなく、作り直す方が安全です。
python -m venv .venv
python -m pip install -r requirements.txt
調査の基本順
1. pwd/cdで現在位置を確認
2. sys.executableでPythonを確認
3. python -m pip --versionでpipを確認
4. pip show/listで導入状況を確認
5. requirements.txtなどと比較
6. 必要なら仮想環境を再作成
12. まとめ
全体まとめ
Pythonの仮想環境は、プロジェクト専用のPythonパッケージ導入先を作る仕組みです。プロジェクトごとに異なるライブラリやバージョンを使えるため、依存関係の競合を防げます。標準の
venvではpython -m venv .venvで作成し、有効化後にpython -m pip installで必要なパッケージを導入します。仮想環境本体はGitへ登録せず、requirements.txtやpyproject.tomlから再作成します。
最低限覚えるコマンド
python -m venv .venv
python -m pip --version
python -m pip install -r requirements.txt
python -m pip list
python -m pip check
python -c "import sys; print(sys.executable)"
deactivate
最重要ポイント
仮想環境 = OS全体の仮想化ではない
仮想環境 = Python環境と外部パッケージの分離
作る → 有効化 → 導入 → 実行 → 依存関係を記録