Python仮想環境の作成(venv)

仮想環境は独立したPython実行空間であり、独自のインタープリター、インストール済みパッケージ、設定を持ち、システムのグローバル環境から完全に分離されています。

Python仮想環境(Virtual Environment)は独立したPython実行環境であり、同じマシン上で異なるプロジェクトごとに隔離されたPython環境を作成できます。

異なるプロジェクトはそれぞれの仮想環境で並行して実行でき、互いに干渉しません。

各仮想環境はそれぞれ次のものを持ちます:

  • Python インタープリター
  • インストール済みのパッケージ/ライブラリ
  • 環境変数
グローバルインストール(バージョン競合) ✓ 仮想環境(完全分離) グローバルPython環境 site-packages(すべてのプロジェクトで共有) プロジェクトA Django 3.2が必要 プロジェクトB Django 4.0が必要 バージョン競合、共存不可 プロジェクトA .venv Django 3.2を独立してインストール プロジェクトB .venv Django 4.0を独立してインストール

仮想環境により各プロジェクトが独立した依存関係空間を持ち、バージョン競合を完全に解消します

なぜ仮想環境が必要か

  • プロジェクトの分離:異なるプロジェクトで異なるバージョンのPythonやサードパーティ製ライブラリを使用できる
  • 汚染の防止:インストールしたパッケージは現在の環境にのみ影響し、グローバルなPythonを汚染しない
  • 依存関係の管理:以下によりrequirements.txt環境を正確に記録・再現できる
  • 安全なテスト:他のプロジェクトに影響を与えずに、パッケージのアップグレードや試用を安心して行える

ユースケースの例:

  • プロジェクトAはDjango 3.2バージョンを必要とする
  • プロジェクトBはDjango 4.0バージョンを必要とする
  • システム全体にインストールすると、2つのバージョンが競合する

仮想環境ツール

ツール名 タイプ Pythonバージョン対応 インストール方法 特徴 適用シーン
venv(推奨) 組み込みモジュール ≥ 3.3 インストール不要、組み込み 軽量、公式推奨、使い方が簡単 一般的な開発、日常プロジェクト
virtualenv サードパーティ製ツール 2.xおよび3.x pip install virtualenv 機能が豊富で、複数バージョンに対応 旧バージョンや高度な機能との互換性が必要な場合
conda Anaconda付属 2.xおよび3.x Anaconda/Minicondaとともにインストール 言語横断的なパッケージ管理、データサイエンス向けエコシステム データサイエンス、機械学習プロジェクト

より古いバージョンをサポートする必要がある場合は、virtualenv(Python 2互換)を使用できます:

pip install virtualenv  # 非必须,venv 通常够用

この章ではvenv仮想環境の作成・管理を行います。


仮想環境の作成

Python 3.3+ には組み込みのvenvモジュールがあり、追加インストールは不要です。

使用手順

使用手順の概要

1
作成
python -m venv
2
アクティブ化
activate
3
依存関係のインストール
pip install
4
開発・デバッグ
python / run
5
停止
deactivate
Box 1: 作成 (紫) 環境の作成 python -m venv Box 2: アクティブ化 (ティール) アクティブ化 source activate Box 3: インストール (ティール) 依存関係のインストール pip install Box 4: 開発 (ティール) 開発・実行 python / test Box 5: 停止 (グレー) 停止 deactivate アクティブ化中:pipとpythonコマンドは両方とも仮想環境を指し、グローバルには影響しません

Pythonバージョンの確認:

python3 --version
# 或者
python --version

仮想環境の作成:

# 基本语法
python3 -m venv 环境名称

たとえば、次の名前で作成する.venvという仮想環境:

例

# プロジェクトディレクトリに入る
mkdir my_project && cd my_project

# 仮想環境を作成('.venv'という名前は一般的な慣習)
python3 -m venv .venv

パラメータの説明:

  • -m venv:venvモジュールを使用
  • .venv:仮想環境の名前(カスタマイズ可能)

作成後のディレクトリ構造

.venv/
├── bin/            # 在 Unix/Linux 系统上
│   ├── activate    # 激活脚本
│   ├── python      # 环境 Python 解释器
│   └── pip         # 环境的 pip
├── Scripts/        # 在 Windows 系统上
│   ├── activate    # 激活脚本
│   ├── python.exe  # 环境 Python 解释器
│   └── pip.exe     # 环境的 pip
└── Lib/            # 安装的第三方库

仮想環境のアクティブ化

アクティブ化後、現在のターミナルのpythonおよびpipコマンドは自動的にその仮想環境を指すようになり、すべてのインストール操作は隔離された空間内で行われます。

macOS / Linux

source .venv/bin/activate

Windows(CMD / PowerShell)

.venv\Scripts\activate

アクティブ化に成功すると、コマンドラインプロンプトに通常、環境名が表示されます:

(.venv) $

アクティブ化が有効かどうかを確認:

# 查看 Python 路径,应指向 .venv 目录
which python       # macOS/Linux
where python       # Windows
→ /path/to/my_project/.venv/bin/python

仮想環境の使用

パッケージのインストール

アクティブな環境では、pipを使用してインストールしたパッケージは現在の環境にのみ影響します:

pip install package_name

例:

# 安装单个包(如Django)
(.venv) pip install django==3.2.12

# 安装多个包
(.venv) pip install requests pandas

# 安装速度慢?使用国内镜像
(.venv)  pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

インストール済みパッケージの確認

(.venv) pip list
Package    Version
---------- -------
Django     3.2.12
pip        21.2.4

# 查看某个包的详情
(.venv) pip show django

# 升级包
(.venv) pip install --upgrade pip

依存関係のエクスポート

requirements.txtを使用してプロジェクト環境を記録・再現するのは、チームでの共同作業の標準的な方法です:

(.venv) pip freeze > requirements.txt

requirements.txtファイルの内容例:

Django==3.2.12
requests==2.26.0
pandas==1.3.3

ファイルから依存関係をインストール

(.venv) pip install -r requirements.txt

ヒント:.venv/ を .gitignore に追加し、requirements.txt のみをコミットしてください。仮想環境はサイズが大きくパスに依存するため、バージョン管理に含めるべきではありません。


仮想環境を終了

作業が完了したら、仮想環境を終了できます:

deactivate

終了後、コマンドラインプロンプトは通常に戻り、Pythonとpipコマンドはシステムのグローバルバージョンを使用します。


仮想環境を削除

仮想環境を削除するには、対応するディレクトリを削除するだけで済みます:

# 确保已退出环境
deactivate

仮想環境を削除

仮想環境は本質的に通常のディレクトリであり、ディレクトリを削除すれば完全に取り除かれます:

macOS / Linux

rm -rf .venv

Windows

rmdir /s /q .venv
注意:削除する前に必ずdeactivate環境を終了してください。そうしないと、現在のシェルに無効な環境変数が残ります。

実際のプロジェクト例

Djangoプロジェクトを開発するとします:

例

# 1. プロジェクトディレクトリを作成して入る
mkdir my_site && cd my_site

# 2. 仮想環境を作成してアクティブ化
python3 -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate

# 3. Djangoをインストールして依存関係を記録
(.venv) pip install django==4.2
(.venv) pip freeze > requirements.txt

# 4. Djangoプロジェクトを初期化
(.venv) django-admin startproject config .

# 5. データベースをマイグレーションして開発サーバーを起動
(.venv) python manage.py migrate
(.venv) python manage.py runserver

# 6. 開発が完了したら、環境を終了
(.venv) deactivate

上級の使い方

Pythonのバージョンを指定

複数のPythonバージョンをインストールしている場合、どのバージョンを使って仮想環境を作成するかを指定できます:

python3.8 -m venv .venv  # 使用 Python 3.8

pipなしの環境を作成

python -m venv --without-pip .venv

システムパッケージを継承する仮想環境を作成

python -m venv --system-site-packages .venv

よくある質問(FAQ)

1. 仮想環境にactivateスクリプトがないのはなぜですか?

正しいパスを使用していることを確認してください:

  • Windows: Scripts\activate
  • Unix/Linux: bin/activate

2. 現在仮想環境にいるかどうかを確認するには?

コマンドラインプロンプトに環境名のプレフィックスがあるか確認するか、次のコマンドを実行します:

which python

3. パッケージのインストールが遅い

国内ミラーソースを使用:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name

Pythonインタープリタのパスが仮想環境ディレクトリ内にあるか確認してください。

4. 仮想環境は場所を移動できますか?

お勧めしません。仮想環境内のスクリプトと設定ファイルには絶対パスがハードコードされているため、移動すると機能しなくなります。移行する場合、最も簡単な方法は環境を再作成し、requirements.txt依存関係を復元します。

5. 仮想環境はどのくらいの容量を占有しますか?

空の環境は約20〜50MBで、インストールするパッケージが増えると増加します。データサイエンスプロジェクト(NumPy、Pandas、PyTorch)では数GBに達する可能性があります。使用しなくなった仮想環境を定期的にクリーンアップするのは良い習慣です。


ベストプラクティス

  1. 各プロジェクトに独立した環境:異なるプロジェクトの依存関係が互いに影響するのを防ぎます
  2. 統一命名.venv:ほとんどのIDE(VS Code、PyCharm)が自動的に認識できます
  3. こまめに更新requirements.txt:毎回pip install後に同期してエクスポート
  4. バージョン管理では仮想環境を無視する:.gitignoreに追加.venv/
  5. 廃止した環境を定期的にクリーンアップ:ディスク容量を解放します
  6. 本番環境ではバージョン番号を固定:requirements.txtに明記し、==バージョンを固定して、意図しないアップグレードを防ぐ
# .gitignore 推荐配置
.venv/
__pycache__/
*.pyc
.env
*.egg-info/
その他の拡張