Python入門

【Python】pip listとpip freezeの違いを徹底解説|requirements.txtの作り方も紹介

Python初心者必見!「pip list」と「pip freeze」の違いをわかりやすく解説

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 listpip 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=freezepip 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点あります。

  1. 表示形式:「パッケージ名==バージョン」という形式(==区切り)で出力される
  2. pipとsetuptoolsが含まれない:pip自体やsetuptoolsなど、pip管理外のパッケージは出力から除外される場合がある

pip listとpip freezeの違いを比較表で整理

2つのコマンドの違いを以下の表にまとめました。

比較項目pip listpip 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 freezerequirements.txt の流れは、チーム開発や本番環境へのデプロイにおいて欠かせない手順です。


仮想環境(venv)と組み合わせて使うのがベストプラクティス

pip listpip 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 listpip 自体や setuptools などの管理ツールも含めて表示しますが、pip freeze はそれらを除外します。そのため、pip freeze の方が表示件数が少なくなることがあります。

Q. pip freezeでpipとsetuptoolsを含めたい場合は?

A. pip list --format=freeze を使うと、pipsetuptools を含めた全パッケージをfreeze形式で出力できます。

pip list --format=freeze > requirements.txt

Q. requirements.txtに全パッケージが必要?

A. 仮想環境を使用している場合は問題ありませんが、グローバル環境でそのまま pip freeze を実行すると不要なパッケージも含まれる場合があります。プロジェクトで使用するパッケージのみを記載するためにも、仮想環境の使用を強く推奨します


まとめ:pip listとpip freezeの使い分けポイント

この記事では、pip listpip freeze の違いと使い方について解説しました。最後に要点を整理します。

  • pip list:インストール済みパッケージを表形式で見やすく表示。確認用途に最適。
  • pip freeze:「パッケージ名==バージョン」形式で出力。requirements.txt作成に最適。
  • requirements.txtpip freeze > requirements.txt で作成し、pip install -r requirements.txt で環境を再現できる。
  • 仮想環境(venv)との併用:プロジェクトごとに環境を分けることで、クリーンな依存関係管理が可能。

Pythonのパッケージ管理をマスターすることで、チーム開発や本番環境へのデプロイがぐっとスムーズになります。ぜひ今日から活用してみてください!

👉 次のステップとして、仮想環境(venv)の使い方もあわせてご覧ください。

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る
徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る
Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です