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 の更新忘れ