venv
言語バージョン管理ツール
venv
概要
venvはPython 3.3以降に標準搭載されている仮想環境作成ツールです。Pythonプロジェクトごとに独立したパッケージ環境を構築でき、依存関係の衝突を防ぎます。標準ライブラリの一部のため、追加インストールが不要で、軽量かつシンプルな仮想環境管理が可能です。
詳細
主な特徴
- 標準搭載: Python 3.3+に標準で含まれ、追加インストール不要
- 軽量: 必要最小限の機能に特化したシンプルな設計
- プロジェクト分離: プロジェクトごとの独立したパッケージ環境
- クリーンな環境: システムPythonを汚染しない安全な開発環境
- 一貫性: pip freeze/installによる依存関係の再現性
- クロスプラットフォーム: Windows、macOS、Linuxで同一の操作
動作原理
venvは指定されたディレクトリに独立したPython環境を作成し、専用のPythonインタープリターとpipを配置します。仮想環境を有効化すると、PATH環境変数が変更され、その環境のPythonが優先されます。
他ツールとの関係
- virtualenv: venvの前身となったサードパーティツール
- conda: より高機能だが重量級の環境管理システム
- pipenv: pip + venvを統合したプロジェクト管理ツール
- poetry: 依存関係管理に特化した現代的なツール
メリット・デメリット
メリット
- 標準搭載: 追加インストールやセットアップが不要
- 軽量・高速: 最小限の機能で高速な環境作成
- シンプル: 学習コストが低く、理解しやすい
- 安全性: システム環境への影響を最小限に抑制
- 再現性: requirements.txtによる環境の完全再現
- 公式サポート: Pythonコア開発チームによる長期サポート
デメリット
- 基本機能のみ: 高度な機能は他ツールに劣る
- Pythonバージョン固定: 作成時のPythonバージョンに依存
- プロジェクト管理機能なし: 依存関係解決やロック機能なし
- 自動活性化なし: ディレクトリ移動時の自動切り替え非対応
- 言語限定: Python以外の言語には対応不可
参考ページ
書き方の例
基本的な仮想環境の作成と使用
# 仮想環境の作成(.venvディレクトリに作成)
python -m venv .venv
# 仮想環境の有効化(Linux/macOS)
source .venv/bin/activate
# 仮想環境の有効化(Windows)
.venv\Scripts\activate.bat
# 仮想環境が有効化されているか確認
which python # または where python (Windows)
python --version
プロジェクト別の環境管理
# プロジェクトディレクトリを作成
mkdir my-python-project
cd my-python-project
# プロジェクト専用の仮想環境を作成
python -m venv venv
# 仮想環境を有効化
source venv/bin/activate # Linux/macOS
# または
venv\Scripts\activate # Windows
# 必要なパッケージをインストール
pip install requests flask pandas
# 依存関係をファイルに保存
pip freeze > requirements.txt
# 仮想環境を無効化
deactivate
依存関係の管理と再現
# 既存プロジェクトの環境を再現
git clone https://github.com/example/python-project.git
cd python-project
# 新しい仮想環境を作成
python -m venv .venv
source .venv/bin/activate
# requirements.txtから依存関係をインストール
pip install -r requirements.txt
# 開発用依存関係がある場合
pip install -r requirements-dev.txt
# 特定バージョンを指定してインストール
pip install "django>=4.0,<5.0"
pip install pytest==7.4.3
高度な設定オプション
# システムパッケージも利用可能な環境を作成
python -m venv --system-site-packages myenv
# 既存pipを使わず、ensurepipを実行しない
python -m venv --without-pip myenv
# シンボリックリンクを使用(Linux/macOS)
python -m venv --symlinks myenv
# カスタムプロンプト名を設定
python -m venv --prompt "MyProject" myenv
# 仮想環境ディレクトリをクリア(既存の場合)
python -m venv --clear existing-venv
PowerShell(Windows)での使用
# 実行ポリシーの設定(初回のみ)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 仮想環境の作成
python -m venv venv
# 仮想環境の有効化
venv\Scripts\Activate.ps1
# 環境確認
Get-Command python
python --version
# 仮想環境の無効化
deactivate
CI/CD環境での使用
# GitHub Actions例
name: Python Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.9, 3.10, 3.11, 3.12]
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Create virtual environment
run: python -m venv venv
- name: Activate virtual environment
run: source venv/bin/activate
- name: Install dependencies
run: |
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install -r requirements-test.txt
- name: Run tests
run: |
source venv/bin/activate
pytest tests/
環境の削除とクリーンアップ
# 仮想環境の無効化
deactivate
# 仮想環境ディレクトリの削除
rm -rf venv # Linux/macOS
# または
rmdir /s venv # Windows
# .gitignoreに仮想環境を追加
echo "venv/" >> .gitignore
echo ".venv/" >> .gitignore
echo "*.pyc" >> .gitignore
echo "__pycache__/" >> .gitignore