Porównanie wyników ujawnia różnice:
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
Dokumentacja Pipa stwierdza
freeze Output installed packages in requirements format.
list List installed packages.
ale czym jest „format wymagań” i dlaczego pip list
generowana jest bardziej wyczerpująca lista niż pip freeze
?
python
python-2.7
python-3.x
pip
nitrl
źródło
źródło
Odpowiedzi:
W przypadku korzystania z pliku
virtualenv
można określićrequirements.txt
plik, aby zainstalować wszystkie zależności.Typowe zastosowanie:
Pakiety muszą mieć określony format, aby można
pip
było je zrozumieć, czyliTo jest „format wymagań”.
Tutaj
django==1.4.2
implikujedjango
wersję instalacyjną1.4.2
(mimo że najnowsza to 1.6.x). Jeśli nie określisz==1.4.2
, zostanie zainstalowana najnowsza dostępna wersja.Więcej informacji można znaleźć w „ Podstawach Virtualenv i pip ” oraz w oficjalnej dokumentacji „ Format pliku wymagań ”.
źródło
pip list
wymienia wszystko ipip freeze
instaluje wszystko, co jest zainstalowane przez pip.pip install
wsgiref
.wsgiref.egg-info
dołącza do katalogu Lib, dlatego pip wie o tym. Nie można [od] zainstalować go za pomocą pip, a późniejsze wersje Pythona pomijają plik metadanych, więc się nie pojawi.Odpowiadając na drugą część tego pytania, dwa pakiety pokazane w,
pip list
ale niepip freeze
sąsetuptools
(czyli easy_install) ipip
sobą.Wygląda na to, że
pip freeze
po prostu nie wyświetla pakietów, od których zależy sam pip. Możesz użyć--all
flagi, aby wyświetlić również te pakiety.Z dokumentacji :
źródło
pip freeze
ma opcję--all
pokazania również:pip, setuptools, distribute, wheel
pip.pypa.io/en/stable/reference/pip_freezeGłówną różnicą jest to, że dane wyjściowe programu
pip freeze
można zrzucić do pliku Requirements.txt i wykorzystać później do ponownego skonstruowania „zamrożonego” środowiska.Innymi słowy, możesz uruchomić:
pip freeze > frozen-requirements.txt
na jednej maszynie, a później na innej maszynie lub w czystym środowisku, które możesz wykonać:pip install -r frozen-requirements.txt
a otrzymasz identyczne środowisko z dokładnie tymi samymi zależnościami zainstalowanymi, jak w oryginalnym środowisku, w którym wygenerował zamrożone wymagania.txt.źródło
Spójrz na dokumentację pip , która opisuje funkcjonalność obu jako:
lista pip
pip zamrozić
Więc są dwie różnice:
Format wyjściowy,
freeze
podaje nam standardowy format wymagań, który może być później użytypip install -r
do zainstalowania wymagań z.Zawartość wyjściowa,
pip list
obejmuje elementy do edycji, które jejpip freeze
nie zawierają.źródło
pip list
pokazuje WSZYSTKIE zainstalowane pakiety.pip freeze
pokazy pakiety TY zainstalowane przezpip
(lubpipenv
w przypadku korzystania z tego narzędzia) polecenie w formacie wymagań.Uwaga poniżej, że setuptools , pip , wheel są instalowane podczas
pipenv shell
tworzenia mojej wirtualnej koperty. Te pakiety NIE zostały zainstalowane przeze mnie przy użyciupip
:Teraz przejrzyj i porównaj dane wyjściowe odpowiednich poleceń, w których zainstalowałem tylko cool-lib i sampleproject (których zależnością jest ziarno pieprzu ):
źródło