pip は Python のパッケージ管理ツールで、サードパーティのライブラリを導入するために使います。本記事では pip install の基本と、バージョンを固定するための requirements.txt の作法を整理します。

目次

  1. pip とは
  2. まず仮想環境を作る
  3. ライブラリをインストールする
  4. バージョンを指定する
  5. アップデートとアンインストール
  6. インストール済みのライブラリを確認する
  7. requirements.txt — 依存をファイルに残す
  8. pip freeze — 現在の状態を書き出す
  9. なぜバージョンを固定するのか
  10. 直接指定 vs freeze
  11. 開発用と本番用を分ける
  12. 代替ツールについて

pip とは

pip は Python に同梱されているパッケージ管理ツールです。PyPI(Python Package Index)に登録された数十万のライブラリを、コマンド 1 つで導入できます。

Terminal window
pip --version
# pip 24.x.x from ... (python 3.12)

python -m pip ... の形で呼ぶと、確実に「現在使っている Python の pip」が起動します。

Terminal window
python -m pip --version

複数のバージョンの Python を使い分ける環境では、こちらの書き方が安全です。

まず仮想環境を作る

pip の説明に入る前に押さえておきたいのが 仮想環境 の話です。グローバル環境にライブラリを入れていくと、プロジェクトごとに必要なバージョンがぶつかります。

Terminal window
python -m venv .venv # 仮想環境を作る
source .venv/bin/activate # 有効化(macOS / Linux)
.venv\Scripts\activate # 有効化(Windows)

仮想環境を有効化したあとに pip install を実行すると、その仮想環境にだけライブラリが入ります。詳細は#2-3「venv で仮想環境を作る」 を参照してください。

ライブラリをインストールする

pip install パッケージ名 でインストールできます。

Terminal window
pip install pandas
pip install requests
pip install pandas requests # 複数まとめて

インストール後は import で使えるようになります。

import pandas as pd
import requests

バージョンを指定する

バージョンを指定しないと、その時点で最新版が入ります。再現性を保つためには、明示的にバージョンを書くのが望ましい運用です。

Terminal window
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 系の最新
演算子意味
==完全一致
>= / <=以上 / 以下
> / <より大きい / より小さい
!=不一致
~=互換バージョン(同じマイナーバージョンの最新)

アップデートとアンインストール

Terminal window
pip install --upgrade pandas # 最新に上げる
pip install -U pandas # 同じ意味の短縮形
pip uninstall pandas # 削除

--upgrade を付けないと、すでに入っている場合は何もしないことに注意します。

インストール済みのライブラリを確認する

pip list で一覧が見られます。

Terminal window
pip list
# Package Version
# ---------- -------
# numpy 2.1.0
# pandas 2.2.3
# requests 2.32.3

特定のライブラリだけ詳細を見たいときは pip show です。

Terminal window
pip show pandas
# Name: pandas
# Version: 2.2.3
# Location: ...
# Requires: numpy, python-dateutil, ...

requirements.txt — 依存をファイルに残す

requirements.txt は、プロジェクトに必要なライブラリと そのバージョン を書いたテキストファイルです。

pandas==2.2.3
numpy==2.1.0
requests==2.32.3
python-dateutil==2.9.0

このファイルがあれば、別の環境で同じ構成を再現できます。

Terminal window
pip install -r requirements.txt

新しい環境で開発を引き継ぐときや、本番にデプロイするときの基本作法です。

pip freeze — 現在の状態を書き出す

仮想環境に入っているライブラリを、すべてバージョン付きで書き出すコマンドです。

Terminal window
pip freeze > requirements.txt

実行すると次のような出力が requirements.txt に書き込まれます。

numpy==2.1.0
pandas==2.2.3
python-dateutil==2.9.0.post0
pytz==2024.1
requests==2.32.3
six==1.16.0
...

pip install で入れたライブラリだけでなく、依存として一緒に入った間接的なライブラリも含まれます。

なぜバージョンを固定するのか

「同じコードでも、入れるライブラリのバージョンが違うと動かない」のはよくあることです。バージョンを固定する目的は次のとおりです。

  • 再現性: 数ヶ月後に同じコードを動かしても結果が変わらない
  • 協業: チームメンバーが同じ環境を作れる
  • トラブル切り分け: 動かなくなったときに「ライブラリのバージョンか、自分のコードか」を分離できる

特に株価データの分析では「過去のバックテスト結果が再現できる」ことが信頼の根拠になります。

直接指定 vs freeze

requirements.txt の作り方は 2 つあります。

方法書く対象メリット
直接指定自分が import するライブラリだけファイルが見やすく、意図が明確
pip freeze依存も含めてすべて完全な再現性が得られる

学習段階では「直接指定」、本番運用では「freeze」を使う流れが現実的です。両者を分けて、requirements.txt(直接)と requirements.lock(freeze 結果)に書き分けるプロジェクトもあります。

開発用と本番用を分ける

テストやコード整形に使うライブラリは、本番では不要です。ファイルを分けると整理しやすくなります。

# requirements.txt (本番用)
pandas==2.2.3
requests==2.32.3
# requirements-dev.txt (開発用)
-r requirements.txt
mypy==1.13.0
pytest==8.3.3
ruff==0.7.0

開発時は pip install -r requirements-dev.txt で両方が入ります。

代替ツールについて

近年は pip の上位互換として、より高速・厳密に依存を管理するツールがあります。

ツール特徴
pipPython 標準。学習段階の中心
pip-toolsrequirements.in から requirements.txt を生成
uv高速な依存解決とインストール(Rust 製)
poetryプロジェクト全体を管理(pyproject.toml)

学習段階では pip で十分です。プロジェクトが育って依存が増えてきたタイミングで、別のツールを検討します。

生成AI へのプロンプト例

依存関係を整理する依頼の例です。

次のコードが動くために必要な Python パッケージを列挙し、
requirements.txt として書き出してください。
要件:
- バージョンは 2026-05 時点の安定版で、明示的に固定する
- 標準ライブラリは含めない
- コード内で実際に import されているものだけを対象とする
```python
import pandas as pd
import requests
from 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` などの代替ツールを検討する