pip と仮想環境

標準ライブラリは多くのシナリオをカバーしていますが、実際のプロジェクトではほとんどの場合サードパーティライブラリを使用します——HTTP には requests、データには pandas、Web アプリには flask。このレッスンでは、これらのライブラリのインストール・管理方法と、仮想環境を使ってプロジェクト間の依存関係を分離する方法を学びます。


1. pip — Python のパッケージマネージャー

pip は Python の公式パッケージマネージャーで、サードパーティライブラリのインストール、アンインストール、管理を行います。

BASH
# パッケージをインストール
pip install requests

# 特定のバージョンをインストール
pip install requests==2.31.0

# パッケージをアンインストール
pip uninstall requests

# インストール済みパッケージを一覧
pip list

# パッケージ情報を表示
pip show requests
💡 pip は PyPI(Python Package Index)からパッケージをダウンロードします。 PyPI は Python の公式パッケージリポジトリで、50 万以上のパッケージをホストしています。pip install package_name は自動的に PyPI からダウンロードしてインストールします。


2. requirements.txt

プロジェクトが複数のサードパーティライブラリに依存している場合、requirements.txt に記録します:

TXT
requests==2.31.0
flask==3.0.0
pandas==2.0.0
numpy==1.24.0
BASH
# すべての依存関係をインストール(プロジェクトクローン後に実行)
pip install -r requirements.txt

# requirements.txt を生成(現在の環境の全パッケージ)
pip freeze > requirements.txt

例:requests を使った API 呼び出し(難易度 ⭐⭐)

PYTHON
# 最初にインストール:pip install requests
import requests

# 公開天気 API を呼び出し
try:
    response = requests.get(
        "https://api.open-meteo.com/v1/forecast",
        params={
            "latitude": 39.9,
            "longitude": 116.4,
            "current_weather": True
        },
        timeout=10
    )
    
    if response.status_code == 200:
        data = response.json()
        weather = data["current_weather"]
        print(f"Beijing current temperature: {weather['temperature']}°C")
        print(f"Wind speed: {weather['windspeed']} km/h")
    else:
        print(f"Request failed: {response.status_code}")

except requests.exceptions.RequestException as e:
    print(f"Network error: {e}")
▶ 試してみよう

3. 仮想環境(venv)

異なるプロジェクトでは同じパッケージの異なるバージョンが必要になる場合があります。仮想環境がこれを解決します——各プロジェクトが独自の独立した環境を持ちます。

BASH
# 仮想環境を作成
python -m venv myenv

# 仮想環境を有効化
# Windows:
myenv\Scripts\activate
# macOS/Linux:
source myenv/bin/activate

# 有効化後、プロンプトの先頭に (myenv) と表示される
# これ以降にインストールするパッケージはこの環境のみに影響

# 仮想環境を無効化
deactivate

ワークフロー

BASH
# 1. プロジェクトディレクトリを作成
mkdir my_project
cd my_project

# 2. 仮想環境を作成
python -m venv venv

# 3. 有効化
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate

# 4. 依存関係をインストール
pip install requests flask

# 5. 依存関係を記録
pip freeze > requirements.txt

# 6. 完了したら無効化
deactivate

# プロジェクトをクローンする他の人:
# python -m venv venv
# source venv/bin/activate(または Windows の同等コマンド)
# pip install -r requirements.txt

4. よく使われるサードパーティライブラリ早見表

ライブラリ 目的 インストールコマンド 一言で
requests HTTP リクエスト pip install requests HTTP リクエストを送る最も人気のある方法
flask Web フレームワーク pip install flask 軽量 Python Web フレームワーク
pandas データ分析 pip install pandas Excel レベルのデータ処理
numpy 数値計算 pip install numpy 高性能配列演算
beautifulsoup4 Web スクレイピング pip install beautifulsoup4 HTML からデータ抽出
pillow 画像処理 pip install pillow 画像のオープン、編集、保存
pytest テストフレームワーク pip install pytest 最も人気のある Python テストフレームワーク

例:pandas を使った CSV 読み取り(難易度 ⭐⭐)

PYTHON
# 最初にインストール:pip install pandas
import pandas as pd

# CSV ファイルを読み取り
df = pd.read_csv("students.csv")
print(df.head())                    # 最初の 5 行
print(f"Rows: {len(df)}, Columns: {len(df.columns)}")
print(df.describe())                # 統計サマリー
▶ 試してみよう

よくあるユースケース


❓ よくある質問

Q pip installpython -m pip install の違いは何ですか?
A 同じ結果を生成します。python -m pip はどの Python インタプリタの pip を使うかを明示的に指定するため、複数 Python バージョン環境ではより安全です。python -m pip install を使う習慣をつけましょう。
Q 仮想環境はプロジェクトディレクトリの内側と外側のどちらに置くべきですか?
A 通常はプロジェクトルート内に置き、名前は venv または .venv にします。これにより他の開発者に一目でわかります。venv/.gitignore に追加することを忘れないでください——仮想環境はバージョン管理にコミットすべきではありません。
Q pip freeze > requirements.txt はすべてのパッケージをリストアップします。依存関係の依存関係も含まれます。多すぎませんか?
A pip freeze は確かにすべてをリストアップします。トップレベルのパッケージだけを残して間接的な依存関係を削除するのが一般的です。または pipreqs を使うと、コード内で実際にインポートされているパッケージのみをスキャンします。

📖 まとめ


📝 練習問題

  1. 基本(難易度 ⭐):仮想環境を作成し、有効化し、requests ライブラリをインストールし、pip list で確認してから無効化してください。

  2. 中級(難易度 ⭐⭐)requests ライブラリを使って https://api.github.com/repos/python/cpython を呼び出し、CPython リポジトリの情報を取得してください。リポジトリ名、スター数、フォーク数、最終更新時刻を出力します。

  3. 上級(難易度 ⭐⭐⭐):プロジェクトディレクトリを作成し、仮想環境を初期化し、flaskrequests をインストールし、pip freezerequirements.txt を生成してください。その後、仮想環境を削除し、requirements.txt を使ってゼロから再構築——動作することを確認してください。

100%