5.

Python 仮想環境 (venv/Poetry) Windows 構築完全ガイド

編集
この記事の要点
  • Windows の Python 仮想環境の標準は venvpython -m venv .venv で作成、.venv\Scripts\activate で有効化
  • PowerShell で activate が拒否される場合は ExecutionPolicyRemoteSigned
  • プロジェクト管理込みで使うなら Poetry (pyproject.toml)、データサイエンスなら Anaconda (conda env) を推奨
  • 複数 Python バージョンの併用には pyenv-win、簡易には py launcher (py -3.11)
  • VS Code は .venv を自動検出してインタープリタとして提示する

仮想環境とは

仮想環境 (virtual environment) は、プロジェクトごとに独立した Python 実行環境を用意する仕組みです。グローバルに pip install すると、別プロジェクトの依存パッケージのバージョン差で簡単に壊れます。仮想環境を切れば、プロジェクト A は Django 4.2、プロジェクト B は Django 5.0 といった共存が可能になります。

ツール同梱得意分野推奨度
venvPython 3.3+ 標準シンプル、追加導入不要★★★★★
virtualenv外部venv より高機能 / 高速★★★
pipenv外部Pipfile による依存固定★★
Poetry外部pyproject.toml、ビルド、公開まで★★★★★
Anaconda / Miniconda外部データサイエンス、C 依存ライブラリ★★★★
pyenv-win外部Python 本体の複数バージョン管理★★★★

venv (標準): 最速の手順

# プロジェクトフォルダで実行
cd C:\work\myproject

# 仮想環境を .venv に作成
python -m venv .venv

# 有効化 (PowerShell)
.venv\Scripts\Activate.ps1

# 有効化 (コマンドプロンプト cmd.exe)
.venv\Scripts\activate.bat

# プロンプトの先頭に (.venv) が付けば成功
# (.venv) PS C:\work\myproject>

# パッケージインストール
pip install requests pandas

# 無効化
deactivate

PowerShell の ExecutionPolicy エラー

新規 Windows で初めて Activate.ps1 を実行すると、次のように拒否されます:

.venv\Scripts\Activate.ps1 : このシステムではスクリプトの実行が無効になっているため、
ファイル C:\work\myproject\.venv\Scripts\Activate.ps1 を読み込むことができません。
詳細については、「about_Execution_Policies」を参照してください
(https://go.microsoft.com/fwlink/?LinkID=135170)。

対処は ExecutionPolicy を RemoteSigned または Bypass に変更します:

# 現在のユーザーのみ RemoteSigned に
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

# 確認
Get-ExecutionPolicy -List

# Bypass で一時的にスクリプトを実行
PowerShell -ExecutionPolicy Bypass -File .venv\Scripts\Activate.ps1

requirements.txt による依存管理

# 現在のパッケージ一覧をファイルに保存
pip freeze > requirements.txt

# 別環境で復元
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt

# requirements.txt の例
# requests==2.31.0
# pandas==2.2.0
# numpy>=1.26,<2.0

Poetry (推奨): プロジェクト管理込み

Poetry は pyproject.toml で依存と仮想環境をまとめて管理する近代的なツールです。新規プロジェクトはこれが第一候補です。

# 公式インストーラ
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

# PATH に追加 (例)
$env:Path += ";$env:APPDATA\Python\Scripts"

# 新規プロジェクト
poetry new mypkg
cd mypkg

# 既存プロジェクトに導入
poetry init

# パッケージ追加 (自動で仮想環境作成)
poetry add requests pandas
poetry add --group dev pytest black

# 仮想環境内でコマンド実行
poetry run python main.py
poetry run pytest

# シェルに入る
poetry shell

Anaconda / Miniconda: データサイエンス向け

NumPy、SciPy、scikit-learn など、C 拡張を多く含むパッケージは Anaconda が高速かつ安定です。GPU 版 PyTorch / TensorFlow も簡単に入ります。

# Miniconda インストール後

# 環境作成 (Python バージョン指定可)
conda create -n ds python=3.11 numpy pandas scikit-learn

# 一覧
conda env list

# 有効化
conda activate ds

# パッケージ追加
conda install matplotlib seaborn
conda install -c pytorch pytorch torchvision

# pip との併用 (conda で入らないものだけ)
pip install streamlit

# 環境エクスポート
conda env export > environment.yml

# 環境削除
conda env remove -n ds

pyenv-win: 複数 Python バージョン併用

# Git Bash または PowerShell で
git clone https://github.com/pyenv-win/pyenv-win.git $env:USERPROFILE\.pyenv

# 環境変数 PYENV / PYENV_HOME を設定し、PATH に
# %USERPROFILE%\.pyenv\pyenv-win\bin と \shims を追加

pyenv install -l            # 利用可能なバージョン一覧
pyenv install 3.11.9
pyenv install 3.12.4

pyenv versions              # インストール済
pyenv global 3.12.4         # 既定
pyenv local 3.11.9          # プロジェクトごと (.python-version)

py launcher (Windows 公式)

python.org の公式インストーラには py ランチャーが同梱されます。複数バージョンを簡単に呼び分けられます。

py -0           # インストール済 Python 一覧
py -3.11        # Python 3.11 を起動
py -3.12 -m venv .venv  # 3.12 で venv 作成
py -m pip install requests

VS Code の自動検出

  1. VS Code で .venv があるフォルダを開く
  2. Python 拡張機能が .venv を自動検出
  3. 右下のステータスバーから Python: Select Interpreter.venv を選択
  4. ターミナルを開くと自動で activate される

FAQ

Q: .venv はリポジトリに含めるべき?
A: 含めません。.gitignore.venv/ を追加。代わりに requirements.txt / pyproject.toml をコミット。

Q: venv と virtualenv の違いは?
A: venv は Python 3.3+ の標準。virtualenv はそれより古く、Python 2 にも対応。機能・速度面で virtualenv の方が若干上ですが、新規は venv で十分です。

Q: WSL2 と Windows のどちらで作るべき?
A: 本番が Linux なら WSL2 推奨。Windows ネイティブで作った venv は Linux に持っていけません (バイナリ非互換)。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Python本体・ライブラリのインストール
  2. Anaconda
  3. 統合開発環境の導入
  4. 仮想環境の構築(Mac)
  5. 仮想環境の構築(WIndows)