この記事のゴール
- 仮想環境(venv) を自分で作成・切替・削除できる
pip install/requirements.txtにより 他メンバーが 1 コマンドで同じ環境を再現 できる- 次のステップとして Poetry / pyproject.toml の基本的な位置づけを理解する
なぜ仮想環境が必要?(5 分)
問題: 1 台の PC に複数プロジェクトが増えるほど、ライブラリのバージョン衝突(例: A では
Django 4, B ではDjango 3)が起こり “昨日まで動いたコードが壊れる”。
解決: プロジェクトごとに独立した 仮想環境 を作り、インストール先(site-packages)を分離する。これによりアップデートが他プロジェクトへ伝播しない。
追加メリット:
- ライブラリ削除を気軽に試せる(失敗したら環境を作り直せば良い)
- CI / 本番サーバでも
requirements.txtを使って 再現性 を確保できる
venv の基本(復習 + 応用)(10 分)
# プロジェクト作成
mkdir myapp && cd myapp
# 仮想環境作成 (.venv フォルダ名は自由)
python -m venv .venv
# 有効化
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
# macOS / Linux (bash/zsh)
source .venv/bin/activate
# 確認
which python # or where python (Windows)
python -V # バージョン表示
# 無効化
deactivate
`
ヒント: プロンプトに
(.venv)と表示されていれば有効。
Git 運用:.venv/は巨大なのでコミットしない。.gitignoreに.venv/を追加。必要なのは後述のrequirements.txtのみ。
.gitignore 例:
.venv/
__pycache__/
*.pyc
pip でパッケージを入れる(7 分)
まずは最新版へアップデートしておくとトラブルが減る:
python -m pip install --upgrade pip
インストール / 情報表示:
pip install requests
pip show requests # インストール情報表示
pip list # 現在入っているパッケージ一覧
Python コード使用例:
import requests
r = requests.get("https://httpbin.org/json", timeout=5)
print(r.status_code, r.headers.get("Content-Type"))
data = r.json()
ポイント:
pipコマンドは「有効化した仮想環境」内の Python に紐づく。混乱したらwhich pipでパスを確認。
requirements.txt で再現性を確保(10 分)
現在の依存を書き出す
pip freeze > requirements.txt
requirements.txt 例:
requests==2.32.3
urllib3==2.2.2
別の開発者 / サーバで再現
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
ポイント
pip freezeは直接インストールしたもの + 間接依存を すべて 固定する。必要最低限だけ記録したい場合は手動で編集しても良い。- 依存を更新したら 必ず再度 freeze して PR。更新 PR に差分が出るのでレビューしやすい。
パッケージの更新・削除(5 分)
pip list --outdated # 更新可能な一覧
pip install -U requests # アップデート(--upgrade と同義)
pip uninstall requests # 削除
複数一括更新は慎重に。更新後はアプリが動くかテストし、OK なら pip freeze > requirements.txt。
もう一歩進んだ管理:Poetry 概要(8 分)
Poetry とは? 依存管理 + 仮想環境作成 + パッケージ公開を一元化するツール。
pyproject.tomlに「直接依存のみ」を書き、poetry.lockで厳密なバージョンを固定する。
最小操作:
pip install poetry
poetry init # 対話形式で pyproject.toml 作成
poetry add requests
poetry install # lock ファイルに基づいて環境作成
poetry run python script.py
pyproject.toml 例(抜粋):
[tool.poetry]
name = "myapp"
version = "0.1.0"
[tool.poetry.dependencies]
python = "^3.12" requests = "^2.32.3"
いつ導入する? チーム人数が増え “依存の最小表現” と “自動公開” が欲しくなったら。まずは venv + requirements で慣れてからで十分。
よくあるトラブルシューティング(7 分)
| 症状 / エラー | 原因 / 対処 |
|---|---|
ModuleNotFoundError | 仮想環境未有効化 / インストール忘れ → activate 後に pip install |
pip: command not found | Python 未インストール or PATH 問題 → 再インストール |
バージョン衝突 (X requires Y<2.0, but Y 2.1.0 is installed) | 依存競合 → 古い方/新しい方へ統一し再インストール (pip install Y==1.9.*) |
SSL error で失敗 | 社内プロキシ / 証明書 → 環境変数 HTTP_PROXY 設定 or 証明書をシステムに追加 |
PermissionError | グローバル環境に誤ってインストール → 仮想環境を使う(pip install --user で逃げることも可) |
練習チャレンジ(10 分)
お題: “天気 API から JSON を取得して保存” スクリプトを作成。
- 仮想環境を作る (
python -m venv .venv→ 有効化)requestsをインストールfetch_weather.pyを書き、レスポンス JSON をweather.jsonに保存pip freeze > requirements.txt- 別 PC で同じ手順を再現できるかテスト
⇒ 同僚レビューで “README の手順通り動いた” と言われたら成功!
次に覚える 3 キーワード 🔑
try / except― 失敗しても落ちないコードlogging― どこで何が起きたか記録with open()― ファイルを安全に扱う
参考リンク
- pip ユーザガイド: https://pip.pypa.io/en/stable/
- 仮想環境 (venv): https://docs.python.org/ja/3/library/venv.html
- pyproject.toml 仕様: https://peps.python.org/pep-0518/
- Poetry: https://python-poetry.org/
まとめ
- 仮想環境 + requirements.txt で “誰でも同じ状態” を瞬時に再現でき、障害調査が楽になる。
- 慣れてきたら Poetry など高度なツールへステップアップし、より安全で自動化された運用へ。
- 次回(第 5 回)は 例外処理 & ロギング で “落ちても原因を追えるコード” を書こう!


コメント