0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python:仮想環境 早見表

0
Posted at

Python:仮想環境

Pythonの仮想環境について、作成・利用・確認・再現・削除までの資料です。
Python 3.11以降を想定しています。


目次

  1. 仮想環境とは
  2. 何が分離され、何が分離されないか
  3. 仮想環境のメリット
  4. venvによる作成方法
  5. 有効化・無効化
  6. 仮想環境の使い方
  7. 仮想環境を確認する方法
  8. 依存関係の保存と再現
  9. 仮想環境の種類・関連ツール
  10. 実行できる確認コード
  11. よくあるエラーと確認手順
  12. まとめ

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パッケージと実行環境 軽い venvvirtualenv
コンテナ アプリ実行環境、ファイルシステム、プロセスなど 中程度 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が一時的に変更され、仮想環境内のpythonpipが優先されます。

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 venvuv sync
Poetry ポエトリー 依存関係、パッケージ化、仮想環境管理 poetry installpoetry run
Pipenv ピップエンブ Pipfileを使う依存関係・環境管理 pipenv installpipenv run
Conda コンダ Python以外も含むパッケージ・環境管理 conda createconda activate

9-1. venv

標準機能で、まず覚える基本です。

python -m venv .venv

向いている場面:

  • 一般的なPython学習
  • Webアプリ
  • テスト自動化
  • 小〜中規模プロジェクト
  • requirements.txtpyproject.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.txtpyproject.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環境と外部パッケージの分離

作る → 有効化 → 導入 → 実行 → 依存関係を記録

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?