Pythonで開発を進めるとき、「pip list」と「pip freeze」はどちらもインストール済みパッケージを確認するコマンドです。しかし、この2つには重要な違いがあり、用途に応じて使い分けることが大切です。
この記事では、以下の疑問をお持ちの方に向けて、丁寧に解説していきます。
- pip listとpip freezeは何が違うの?
- どちらのコマンドをどんな場面で使えばいいの?
- requirements.txtはどうやって作るの?
「pipって何?」という方にも理解できるよう、基礎から丁寧に説明しますので、ぜひ最後まで読んでみてください。
コマンドの実行環境
この記事で紹介するコマンドは、コマンドプロンプト(Windows)またはターミナル(Mac/Linux)上で実行します。コマンドプロンプトの起動方法がわからない方は、以下の記事をご参照ください。
そもそも「pip」とは?
pip(ピップ)とは、Python用のパッケージ管理ツールです。NumPyやDjangoといった外部ライブラリを、コマンド1つでインストール・アンインストール・管理できます。Pythonをインストールすると、ほとんどの場合pipも一緒に利用できるようになります。
# パッケージのインストール例
pip install numpy
# パッケージのアンインストール例
pip uninstall numpy
この記事で取り上げる pip list と pip freeze は、どちらも現在の環境にインストール済みのパッケージを確認するためのコマンドです。次のセクションからそれぞれ詳しく見ていきましょう。
「pip list」とは?インストール済みパッケージを一覧表示するコマンド
pip list は、現在のPython環境にインストールされているパッケージの名前とバージョンを見やすい表形式で一覧表示するコマンドです。
pip listの基本的な使い方
pip list
実行すると、以下のようにパッケージ名とバージョンが2列の表形式で表示されます。
C:\Users>pip list
Package Version
----------------- ---------
asgiref 3.6.0
bottle 0.12.23
cycler 0.11.0
Django 3.2.17
fonttools 4.38.0
joblib 1.2.0
kiwisolver 1.4.4
matplotlib 3.5.3
numpy 1.21.6
packaging 23.1
Pillow 9.5.0
pip 23.2.1
pyparsing 3.1.1
python-dateutil 2.8.2
pytz 2022.7.1
scikit-learn 1.0.2
scipy 1.7.3
setuptools 40.8.0
six 1.16.0
sklearn 0.0.post1
sqlparse 0.4.3
threadpoolctl 3.1.0
typing_extensions 4.4.0
このように、Package(パッケージ名)とVersion(バージョン番号)がわかりやすく整列して表示されます。現在の環境に何がインストールされているかをざっと確認したいときに便利なコマンドです。
pip listの便利なオプション
pip list にはいくつかの便利なオプションがあります。
| オプション | 説明 |
|---|---|
--outdated または -o | アップデートが利用可能なパッケージのみ表示 |
--uptodate または -u | 最新版のパッケージのみ表示 |
--format=freeze | pip freezeと同じ形式で表示 |
# アップデート可能なパッケージだけを確認する
pip list --outdated
「pip freeze」とは?requirements.txt作成に使うコマンド
pip freeze もインストール済みパッケージを表示するコマンドですが、pip list と比べて出力形式が異なります。具体的には、パッケージ名とバージョンが == でつながれた形式(要件ファイル形式)で出力されます。
pip freezeの基本的な使い方
pip freeze
実行すると、以下のように表示されます。
C:\Users>pip freeze
asgiref==3.6.0
bottle==0.12.23
cycler==0.11.0
Django==3.2.17
fonttools==4.38.0
joblib==1.2.0
kiwisolver==1.4.4
matplotlib==3.5.3
numpy==1.21.6
packaging==23.1
Pillow==9.5.0
pyparsing==3.1.1
python-dateutil==2.8.2
pytz==2022.7.1
scikit-learn==1.0.2
scipy==1.7.3
setuptools==40.8.0
six==1.16.0
sklearn==0.0.post1
sqlparse==0.4.3
threadpoolctl==3.1.0
typing_extensions==4.4.0
pip list との大きな違いは2点あります。
- 表示形式:「パッケージ名==バージョン」という形式(
==区切り)で出力される - pipとsetuptoolsが含まれない:pip自体やsetuptoolsなど、pip管理外のパッケージは出力から除外される場合がある
pip listとpip freezeの違いを比較表で整理
2つのコマンドの違いを以下の表にまとめました。
| 比較項目 | pip list | pip freeze |
|---|---|---|
| 出力形式 | 表形式(Package / Version の2列) | 要件ファイル形式(パッケージ名==バージョン) |
| 視認性 | ◎ 人が読みやすい | △ やや機械的な表示 |
| requirements.txt向き | △ そのままでは使いにくい | ◎ そのまま利用できる |
| pip・setuptools表示 | ○ 表示される | × 通常は除外される |
| 主な用途 | 環境の確認・把握 | 環境の再現・共有 |
一言でまとめると、「確認するなら pip list、環境を共有・再現するなら pip freeze」と覚えておくと便利です。
pip freezeを使ったrequirements.txtの作り方
pip freeze の最も重要な使い方が、requirements.txtの作成です。requirements.txt とは、プロジェクトで使用しているパッケージとバージョンを記録したテキストファイルで、他の開発者や別の環境で同じ環境を再現するために使用します。
requirements.txtを作成する方法
以下のコマンドを実行するだけで、カレントディレクトリに requirements.txt が自動的に生成されます。
# requirements.txtを生成する
pip freeze > requirements.txt
生成された requirements.txt の中身は次のようになります。
asgiref==3.6.0
Django==3.2.17
numpy==1.21.6
matplotlib==3.5.3
...
requirements.txtから環境を再現する方法
作成した requirements.txt を使って別環境に同じパッケージをインストールするには、以下のコマンドを使います。
# requirements.txtに記載されたパッケージを一括インストール
pip install -r requirements.txt
このように、pip freeze → requirements.txt の流れは、チーム開発や本番環境へのデプロイにおいて欠かせない手順です。
仮想環境(venv)と組み合わせて使うのがベストプラクティス
pip list や pip freeze は、Pythonの仮想環境(venv)と組み合わせることで真価を発揮します。仮想環境を使うと、プロジェクトごとに独立したパッケージ管理ができるため、バージョンの競合を防ぐことができます。
# 仮想環境の作成
python -m venv myenv
# 仮想環境の有効化(Windows)
myenv\Scripts\activate
# 仮想環境の有効化(Mac/Linux)
source myenv/bin/activate
# 仮想環境内でpip freezeを実行してrequirements.txtを作成
pip freeze > requirements.txt
仮想環境内で pip freeze を実行すると、そのプロジェクト専用のパッケージだけが出力されるため、よりクリーンな requirements.txt を作成することができます。
👉 仮想環境の詳しい使い方はこちらの記事も参考にしてください。
よくある質問(FAQ)
Q. pip listとpip freezeで表示されるパッケージ数が違うのはなぜ?
A. pip list は pip 自体や setuptools などの管理ツールも含めて表示しますが、pip freeze はそれらを除外します。そのため、pip freeze の方が表示件数が少なくなることがあります。
Q. pip freezeでpipとsetuptoolsを含めたい場合は?
A. pip list --format=freeze を使うと、pip や setuptools を含めた全パッケージをfreeze形式で出力できます。
pip list --format=freeze > requirements.txt
Q. requirements.txtに全パッケージが必要?
A. 仮想環境を使用している場合は問題ありませんが、グローバル環境でそのまま pip freeze を実行すると不要なパッケージも含まれる場合があります。プロジェクトで使用するパッケージのみを記載するためにも、仮想環境の使用を強く推奨します。
まとめ:pip listとpip freezeの使い分けポイント
この記事では、pip list と pip freeze の違いと使い方について解説しました。最後に要点を整理します。
- ✅ pip list:インストール済みパッケージを表形式で見やすく表示。確認用途に最適。
- ✅ pip freeze:「パッケージ名==バージョン」形式で出力。requirements.txt作成に最適。
- ✅ requirements.txt:
pip freeze > requirements.txtで作成し、pip install -r requirements.txtで環境を再現できる。 - ✅ 仮想環境(venv)との併用:プロジェクトごとに環境を分けることで、クリーンな依存関係管理が可能。
Pythonのパッケージ管理をマスターすることで、チーム開発や本番環境へのデプロイがぐっとスムーズになります。ぜひ今日から活用してみてください!
👉 次のステップとして、仮想環境(venv)の使い方もあわせてご覧ください。
📚 関連記事
- Pythonのライブラリをコマンドプロンプトでインストールする手順— pipコマンドの基本的な使い方を補完
- Pythonの「ライブラリ?パッケージ?モジュール?フレームワーク?」違いが良くわからない言葉の意味— パッケージの概念を理解するのに有用
- Google ColaboratoryでPythonライブラリをpipでインストールする方法【完全ガイド】— pip installの実践的な使用例を提供
- PyCharmで仮想環境が作れないときの原因と解決方法【完全ガイド】— requirements.txtの活用シーンで重要な仮想環境を解説





