web-dev-qa-db-ja.com

ピップフリーズとピップリスト

出力を比較すると、違いが明らかになります。

user@user-VirtualBox:~$ pip list
feedparser (5.1.3)
pip (1.4.1)
setuptools (1.1.5)
wsgiref (0.1.2)
user@user-VirtualBox:~$ pip freeze
feedparser==5.1.3
wsgiref==0.1.2

Pipのドキュメントの状態

freeze                      Output installed packages in requirements format.
list                        List installed packages.

しかし、「要件の形式」とは何ですか。なぜpip listpip freezeよりも包括的なリストを生成するのですか?

88
nitrl

virtualenvを使用している場合、requirements.txtファイルを指定して、すべての依存関係をインストールできます。

典型的な使用法:

$ pip install -r requirements.txt

パッケージは、pipが理解できるように特定の形式である必要があります。

feedparser==5.1.3
wsgiref==0.1.2
Django==1.4.2
...

それが「要件の形式」です。

ここで、Django==1.4.2Djangoバージョン1.4.2をインストールすることを意味します(最新のものは1.6.xですが)。 ==1.4.2を指定しない場合、利用可能な最新バージョンがインストールされます。

詳細については、「 Virtualenv and pip Basics 」および公式の「 Requirements File Format 」ドキュメントを参照してください。

93
karthikr

この質問の2番目の部分に答えるために、pip listに表示されるがpip freezeに表示されない2つのパッケージは、setuptools(easy_install)とpip自体です。

pip freezeは、pip自体が依存するパッケージをリストしていないようです。 --allフラグを使用して、これらのパッケージも表示できます。

ドキュメント から:

--all

出力でこれらのパッケージをスキップしないでください:pip、setuptools、distribute、wheel

30
ForeverWintr

主な違いは、pip freezeの出力をrequirements.txtファイルにダンプし、後で「凍結」環境を再構築するために使用できることです。

言い換えると、次のコマンドを実行できます。pip freeze > frozen-requirements.txtを1台のマシンで実行してから、後で別のマシンまたはクリーンな環境で実行できます:pip install -r frozen-requirements.txt frozen-requirements.txtを生成した元の環境と同じようにインストールされます。

24
Daniel Lahyani

pip documentation を見てください。これは、両方の機能を次のように説明しています。

ピップリスト

編集可能なものを含むインストール済みパッケージをリストします。

pip freeze

インストール済みパッケージを要件形式で出力します。

そのため、2つの違いがあります。

  1. 出力形式freezeは、後で要件をインストールするためにpip install -rで使用できる標準の要件形式を提供します。

  2. 出力コンテンツ、pip listにはpip freezeにはない編集可能ファイルが含まれます。

20
Serjik