pip は Python のパッケージ管理ツールで、サードパーティのライブラリを導入するために使います。本記事では pip install の基本と、バージョンを固定するための requirements.txt の作法を整理します。
目次
- pip とは
- まず仮想環境を作る
- ライブラリをインストールする
- バージョンを指定する
- アップデートとアンインストール
- インストール済みのライブラリを確認する
- requirements.txt — 依存をファイルに残す
- pip freeze — 現在の状態を書き出す
- なぜバージョンを固定するのか
- 直接指定 vs freeze
- 開発用と本番用を分ける
- 代替ツールについて
pip とは
pip は Python に同梱されているパッケージ管理ツールです。PyPI(Python Package Index)に登録された数十万のライブラリを、コマンド 1 つで導入できます。
pip --version# pip 24.x.x from ... (python 3.12)python -m pip ... の形で呼ぶと、確実に「現在使っている Python の pip」が起動します。
python -m pip --version複数のバージョンの Python を使い分ける環境では、こちらの書き方が安全です。
まず仮想環境を作る
pip の説明に入る前に押さえておきたいのが 仮想環境 の話です。グローバル環境にライブラリを入れていくと、プロジェクトごとに必要なバージョンがぶつかります。
python -m venv .venv # 仮想環境を作るsource .venv/bin/activate # 有効化(macOS / Linux).venv\Scripts\activate # 有効化(Windows)仮想環境を有効化したあとに pip install を実行すると、その仮想環境にだけライブラリが入ります。詳細は#2-3「venv で仮想環境を作る」 を参照してください。
ライブラリをインストールする
pip install パッケージ名 でインストールできます。
pip install pandaspip install requestspip install pandas requests # 複数まとめてインストール後は import で使えるようになります。
import pandas as pdimport requestsバージョンを指定する
バージョンを指定しないと、その時点で最新版が入ります。再現性を保つためには、明示的にバージョンを書くのが望ましい運用です。
pip install pandas==2.2.3 # ぴったりこのバージョンpip install "pandas>=2.2,<3.0" # 2.2 以上 3.0 未満pip install "pandas~=2.2.3" # 2.2.x 系の最新| 演算子 | 意味 |
|---|---|
== | 完全一致 |
>= / <= | 以上 / 以下 |
> / < | より大きい / より小さい |
!= | 不一致 |
~= | 互換バージョン(同じマイナーバージョンの最新) |
アップデートとアンインストール
pip install --upgrade pandas # 最新に上げるpip install -U pandas # 同じ意味の短縮形pip uninstall pandas # 削除--upgrade を付けないと、すでに入っている場合は何もしないことに注意します。
インストール済みのライブラリを確認する
pip list で一覧が見られます。
pip list# Package Version# ---------- -------# numpy 2.1.0# pandas 2.2.3# requests 2.32.3特定のライブラリだけ詳細を見たいときは pip show です。
pip show pandas# Name: pandas# Version: 2.2.3# Location: ...# Requires: numpy, python-dateutil, ...requirements.txt — 依存をファイルに残す
requirements.txt は、プロジェクトに必要なライブラリと そのバージョン を書いたテキストファイルです。
pandas==2.2.3numpy==2.1.0requests==2.32.3python-dateutil==2.9.0このファイルがあれば、別の環境で同じ構成を再現できます。
pip install -r requirements.txt新しい環境で開発を引き継ぐときや、本番にデプロイするときの基本作法です。
pip freeze — 現在の状態を書き出す
仮想環境に入っているライブラリを、すべてバージョン付きで書き出すコマンドです。
pip freeze > requirements.txt実行すると次のような出力が requirements.txt に書き込まれます。
numpy==2.1.0pandas==2.2.3python-dateutil==2.9.0.post0pytz==2024.1requests==2.32.3six==1.16.0...pip install で入れたライブラリだけでなく、依存として一緒に入った間接的なライブラリも含まれます。
なぜバージョンを固定するのか
「同じコードでも、入れるライブラリのバージョンが違うと動かない」のはよくあることです。バージョンを固定する目的は次のとおりです。
- 再現性: 数ヶ月後に同じコードを動かしても結果が変わらない
- 協業: チームメンバーが同じ環境を作れる
- トラブル切り分け: 動かなくなったときに「ライブラリのバージョンか、自分のコードか」を分離できる
特に株価データの分析では「過去のバックテスト結果が再現できる」ことが信頼の根拠になります。
直接指定 vs freeze
requirements.txt の作り方は 2 つあります。
| 方法 | 書く対象 | メリット |
|---|---|---|
| 直接指定 | 自分が import するライブラリだけ | ファイルが見やすく、意図が明確 |
pip freeze | 依存も含めてすべて | 完全な再現性が得られる |
学習段階では「直接指定」、本番運用では「freeze」を使う流れが現実的です。両者を分けて、requirements.txt(直接)と requirements.lock(freeze 結果)に書き分けるプロジェクトもあります。
開発用と本番用を分ける
テストやコード整形に使うライブラリは、本番では不要です。ファイルを分けると整理しやすくなります。
# requirements.txt (本番用)pandas==2.2.3requests==2.32.3# requirements-dev.txt (開発用)-r requirements.txtmypy==1.13.0pytest==8.3.3ruff==0.7.0開発時は pip install -r requirements-dev.txt で両方が入ります。
代替ツールについて
近年は pip の上位互換として、より高速・厳密に依存を管理するツールがあります。
| ツール | 特徴 |
|---|---|
pip | Python 標準。学習段階の中心 |
pip-tools | requirements.in から requirements.txt を生成 |
uv | 高速な依存解決とインストール(Rust 製) |
poetry | プロジェクト全体を管理(pyproject.toml) |
学習段階では pip で十分です。プロジェクトが育って依存が増えてきたタイミングで、別のツールを検討します。
生成AI へのプロンプト例
依存関係を整理する依頼の例です。
次のコードが動くために必要な Python パッケージを列挙し、requirements.txt として書き出してください。
要件:- バージョンは 2026-05 時点の安定版で、明示的に固定する- 標準ライブラリは含めない- コード内で実際に import されているものだけを対象とする
```pythonimport pandas as pdimport requestsfrom dateutil.relativedelta import relativedelta
def fetch(url): return pd.DataFrame(requests.get(url).json())「明示的に固定する」「コードで実際に使うものだけ」と書くと、過不足のない結果が返ります([#7-2「データ分析のためのプロンプト設計」](/posts/ai-prompt-design/))。
## まとめ
- pip は Python 標準のパッケージ管理ツール。仮想環境とセットで使う- バージョンは `==` で固定し、再現性と協業を確保する- `pip freeze > requirements.txt` で現在の構成を書き出せる- 大規模になったら `uv` や `poetry` などの代替ツールを検討する