Python 開発で避けて通れない仮想環境の構築。「毎回調べるのが面倒」「プロジェクト別にコマンドが違う」そんな悩みを解決する実践的なコマンド集です。
# プロジェクト作成から起動まで
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
# 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 を配置:
.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)"
}
# 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
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
{
"python.defaultInterpreterPath": "./.venv/bin/python",
"python.terminal.activateEnvironment": true,
"python.formatting.provider": "black",
"python.linting.enabled": true,
"python.linting.flake8Enabled": true
}
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"python": "${workspaceFolder}/.venv/bin/python"
}
]
}
# キャッシュディレクトリの確認
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 以上を基準としています。