Python venv 実践ガイド — コピペで使える環境構築コマンド集

Python 開発で避けて通れない仮想環境の構築。「毎回調べるのが面倒」「プロジェクト別にコマンドが違う」そんな悩みを解決する実践的なコマンド集です。

プロジェクト別 環境構築コマンド

Web 開発(Django)

mkdir django_project && cd django_project
python -m venv .venv
source .venv/bin/activate  # macOS/Linux
# .venv\Scripts\activate   # Windows

pip install --upgrade pip
pip install django python-decouple pillow
django-admin startproject config .
python manage.py migrate
pip freeze > requirements.txt

API 開発(FastAPI)

mkdir fastapi_project && cd fastapi_project
python -m venv .venv
source .venv/bin/activate

pip install fastapi uvicorn python-multipart pydantic python-jose passlib bcrypt
pip freeze > requirements.txt

データサイエンス環境

mkdir data_project && cd data_project
python -m venv .venv
source .venv/bin/activate

pip install pandas numpy matplotlib seaborn scikit-learn jupyter notebook plotly
pip freeze > requirements.txt

# Jupyter 起動
jupyter notebook

スクレイピング環境

mkdir scraping_project && cd scraping_project
python -m venv .venv
source .venv/bin/activate

pip install requests beautifulsoup4 selenium pandas lxml python-dotenv
pip freeze > requirements.txt

便利なワンライナーコマンド

# Flask 環境(1 行)
python -m venv .venv && source .venv/bin/activate && pip install flask requests python-dotenv

# 機械学習環境(1 行)
python -m venv .venv && source .venv/bin/activate && pip install pandas numpy scikit-learn matplotlib

# テスト環境(1 行)
python -m venv .venv && source .venv/bin/activate && pip install pytest pytest-cov black flake8

# Git クローン → 環境構築 → 起動
git clone <repository-url> && cd <project-name>
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

開発効率を上げる自動化

Makefile での環境管理

プロジェクトルートに Makefile を配置します。

.PHONY: setup install run test clean

setup:
	python -m venv .venv
	source .venv/bin/activate && pip install --upgrade pip

install:
	source .venv/bin/activate && pip install -r requirements.txt

run:
	source .venv/bin/activate && python manage.py runserver

test:
	source .venv/bin/activate && python -m pytest

clean:
	rm -rf .venv __pycache__ .pytest_cache .coverage

deploy:
	source .venv/bin/activate && pip freeze > requirements.txt
make setup    # 初回のみ
make install  # 依存関係インストール
make run      # サーバー起動

シェルスクリプトでの完全自動化

#!/bin/bash
# setup.sh - Python プロジェクト自動セットアップ

PROJECT_TYPE=${1:-"web"}

if [ ! -d ".venv" ]; then
    python -m venv .venv
fi

source .venv/bin/activate
pip install --upgrade pip

case $PROJECT_TYPE in
    "web")
        pip install django requests python-decouple
        ;;
    "api")
        pip install fastapi uvicorn pydantic
        ;;
    "data")
        pip install pandas numpy matplotlib jupyter
        ;;
    *)
        echo "不明なプロジェクトタイプ: $PROJECT_TYPE"
        exit 1
        ;;
esac

pip freeze > requirements.txt
echo "セットアップ完了!"
chmod +x setup.sh
./setup.sh web   # Web 開発用
./setup.sh api   # API 開発用
./setup.sh data  # データサイエンス用

複数環境の効率的な管理

開発・テスト・本番環境の分離

mkdir requirements

# requirements/base.txt(共通パッケージ)
cat > requirements/base.txt <<EOF
requests>=2.28.0
python-dotenv>=0.19.0
EOF

# requirements/dev.txt(開発環境)
cat > requirements/dev.txt <<EOF
-r base.txt
pytest>=7.0.0
black>=22.0.0
flake8>=5.0.0
EOF

# requirements/prod.txt(本番環境)
cat > requirements/prod.txt <<EOF
-r base.txt
gunicorn>=20.1.0
psycopg2-binary>=2.9.0
EOF
# 開発環境
python -m venv .venv-dev
source .venv-dev/bin/activate
pip install -r requirements/dev.txt

# 本番環境
python -m venv .venv-prod
source .venv-prod/bin/activate
pip install -r requirements/prod.txt

Docker との統合パターン

# Dockerfile.dev
FROM python:3.11-slim

WORKDIR /app

RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"

COPY requirements/dev.txt .
RUN pip install --no-cache-dir -r dev.txt

COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
# docker-compose.yml
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    environment:
      - DEBUG=1
    command: python manage.py runserver 0.0.0.0:8000

  db:
    image: postgres:13
    environment:
      POSTGRES_DB: myproject
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

トラブルシューティング

依存関係の競合解決

# 環境完全リセット
deactivate
rm -rf .venv
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

パッケージ管理のメンテナンス

# 古いパッケージの確認
pip list --outdated

# 依存関係の整合性チェック
pip check

# 不使用パッケージの特定
pip freeze > current.txt

よくあるエラーの対処法

# 権限エラーの場合
pip install --user package_name

# SSL エラーの場合
pip install --trusted-host pypi.org --trusted-host pypi.python.org package_name

VS Code での環境統合

// .vscode/settings.json
{
    "python.defaultInterpreterPath": "./.venv/bin/python",
    "python.terminal.activateEnvironment": true,
    "python.formatting.provider": "black",
    "python.linting.enabled": true,
    "python.linting.flake8Enabled": true
}

まとめ

Python の venv を効率的に活用するためのポイント:

  • プロジェクト開始時は必ず仮想環境を作成
  • requirements.txt で依存関係を明確化(dev / prod を分離)
  • Makefile やシェルスクリプトで作業を自動化
  • Docker と組み合わせる場合は /opt/venv に配置するパターンが定番

よくある落とし穴:仮想環境の有効化忘れ、グローバル環境への誤インストール、requirements.txt の更新忘れ