Maemaemae

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

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)

# 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

# 起動確認用
echo 'from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello World"}' > main.py

データサイエンス環境

# データ分析・機械学習セット
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

スクレイピング環境

# Web スクレイピング特化セット
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 deploy

# 初回セットアップ
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      # サーバー起動

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

setup.sh ファイルを作成:

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

PROJECT_TYPE=${1:-"web"}

echo "🚀 Python プロジェクトをセットアップ中..."

# 仮想環境作成
if [ ! -d ".venv" ]; then
    echo "📦 仮想環境を作成中..."
    python -m venv .venv
fi

# 仮想環境有効化
echo "✅ 仮想環境を有効化中..."
source .venv/bin/activate

# pip アップグレード
pip install --upgrade pip

# プロジェクトタイプ別インストール
case $PROJECT_TYPE in
    "web")
        echo "🌐 Web開発パッケージをインストール中..."
        pip install django requests python-decouple
        ;;
    "api")
        echo "🔌 API開発パッケージをインストール中..."
        pip install fastapi uvicorn pydantic
        ;;
    "data")
        echo "📊 データサイエンスパッケージをインストール中..."
        pip install pandas numpy matplotlib jupyter
        ;;
    *)
        echo "❓ 不明なプロジェクトタイプ: $PROJECT_TYPE"
        exit 1
        ;;
esac

# requirements.txt 生成
pip freeze > requirements.txt

echo "🎉 セットアップ完了!"
echo "次回以降は 'source .venv/bin/activate' で環境を有効化してください"

使用方法:

chmod +x setup.sh
./setup.sh web   # Web開発用
./setup.sh api   # API開発用
./setup.sh data  # データサイエンス用

複数環境の効率的な管理

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

# 環境別 requirements ファイル作成
mkdir requirements

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

# requirements/dev.txt(開発環境)
echo "-r base.txt
pytest>=7.0.0
black>=22.0.0
flake8>=5.0.0
pre-commit>=2.17.0" > requirements/dev.txt

# requirements/prod.txt(本番環境)
echo "-r base.txt
gunicorn>=20.1.0
psycopg2-binary>=2.9.0" > requirements/prod.txt

環境切り替えコマンド:

# 開発環境
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

環境状態の可視化

# 現在の環境情報を表示
function venv_info() {
    echo "🐍 Python: $(python --version)"
    echo "📦 pip: $(pip --version)"
    echo "🏠 仮想環境: $VIRTUAL_ENV"
    echo "📋 インストール済みパッケージ数: $(pip list | wc -l)"
}

Docker との統合パターン

開発環境での Docker + venv

# 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 での環境管理

# docker-compose.yml
version: '3.8'

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 freeze | cut -d= -f1 | xargs pip install -U

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

# 未使用パッケージの特定
pip freeze > current.txt
pipdeptree --warn silence | grep -E '^[a-zA-Z]' > used.txt

よくあるエラーの対処法

権限エラーの場合

# ユーザー領域にインストール
pip install --user package_name

# 管理者権限での pip 更新
python -m pip install --upgrade pip --user

SSL エラーの場合

# 信頼できるホストを指定
pip install --trusted-host pypi.org --trusted-host pypi.python.org package_name

VS Code での環境統合

settings.json 設定

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

.vscode/launch.json(デバッグ設定)

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "python": "${workspaceFolder}/.venv/bin/python"
        }
    ]
}

パフォーマンス最適化

pip キャッシュの活用

# キャッシュディレクトリの確認
pip cache dir

# キャッシュを利用した高速インストール
pip install --cache-dir ~/.pip/cache package_name

# キャッシュクリア(必要時のみ)
pip cache purge

並列インストールの設定

# pip 設定ファイル作成
mkdir -p ~/.pip
echo "[global]
timeout = 60
trusted-host = pypi.org
               pypi.python.org
cache-dir = ~/.pip/cache" > ~/.pip/pip.conf

まとめ

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

実践のコツ

よくある落とし穴

これらのコマンドとスクリプトを活用して、Python 開発の環境構築を効率化しましょう。

参考資料


この記事は Python 3.8 以上を基準としています。

Pythonvenv仮想環境環境構築開発環境