pip list
とpip freeze
は、Pythonのパッケージ管理ツールであるpipのコマンドの一部で、インストールされているパッケージの情報を表示するために使用されます。しかし、それらは表示する内容に違いがあります。
pip list
コマンドは、インストールされているすべてのパッケージを表示します。各パッケージには、パッケージ名、バージョン、および依存関係の状態が表示されます。このコマンドは、パッケージのバージョンを更新する場合や、使用していないパッケージを削除する場合に便利です。
一方、pip freeze
コマンドは、現在のPython環境にインストールされているすべてのパッケージをリストアップし、必要に応じて出力をファイルに保存することができます。出力フォーマットは、パッケージ名とバージョンの情報が、pip install
コマンドで使用できるように書式設定されたテキストファイルです。これは、アプリケーションの依存関係を完全に再現するために、プロジェクトに必要なパッケージを一度にインストールする必要がある場合に便利です。
例えば、以下のようにpip freeze
コマンドを実行すると、現在のPython環境にインストールされているすべてのパッケージが表示されます。
pip freeze
出力例:
Flask==2.0.2 Jinja2==3.0.2 MarkupSafe==2.0.2 Werkzeug==2.0.2 click==8.0.1 itsdangerous==2.0.1
一方、以下のようにpip list
コマンドを実行すると、インストールされたすべてのパッケージが表示され、それぞれの依存関係の状態も含まれます。
pip list
出力例:
Package Version ------------- ------- click 8.0.1 Flask 2.0.2 itsdangerous 2.0.1 Jinja2 3.0.2 MarkupSafe 2.0.2 pip 21.1.3 setuptools 57.4.0 Werkzeug 2.0.2
したがって、pip list
コマンドは、依存関係の状態を確認することができる反面、pip freeze
コマンドは、依存関係を含めたパッケージ情報を他の開発環境で再現するために使用できるテキストファイルを出力します。pip freeze
コマンドの出力は、requirements.txt
ファイルとして保存されることが一般的です。このファイルは、依存関係を持つパッケージを一括でインストールできるようにするために、プロジェクトのリポジトリに保存されることがあります。
例えば、以下のようにpip freeze
コマンドを使用し、requirements.txt
ファイルに出力することができます。
pip freeze > requirements.txt
>
演算子は、出力をファイルにリダイレクトします。上記のコマンドは、現在のPython環境にインストールされているすべてのパッケージをリストアップし、それらをrequirements.txt
ファイルに書き込みます。
また、requirements.txt
ファイルを使用して、別のPython環境に同じパッケージを一括でインストールすることもできます。以下のように、pip install
コマンドに-r
オプションを付けてrequirements.txt
ファイルを指定することで、同じパッケージを再現することができます。
pip install -r requirements.txt
上記のコマンドは、requirements.txt
ファイルに記述されているすべてのパッケージをインストールします。
したがって、pip list
とpip freeze
は、パッケージ管理において重要なツールであり、それぞれの用途に応じて使い分けることが必要です。