Pip donma ve pip listesi


112

Çıktıların karşılaştırılması farklılıkları ortaya çıkarır:

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'in dokümantasyon durumları

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

ama "gereksinim formatı" nedir ve neden bundan pip listdaha kapsamlı bir liste oluşturur pip freeze?


5
Bilginize, işte belgeler .
alecxe

Yanıtlar:


110

A kullanırken, bir virtualenvbelirtebilirsinizrequirements.txt tüm bağımlılıkları yüklemek dosya .

Tipik bir kullanım:

$ pip install -r requirements.txt

Paketlerin pipanlaşılması için belirli bir formatta olması gerekir.

feedparser==5.1.3
wsgiref==0.1.2
django==1.4.2
...

Bu, "gereksinim formatı" dır.

Burada, django==1.4.2yükleme djangosürümünü ima eder 1.4.2(en son sürüm 1.6.x olsa bile). Belirtmezseniz ==1.4.2, mevcut en son sürüm kurulacaktır.

" Virtualenv ve pip Temelleri " ve resmi " Gereksinimler Dosyası Biçimi " belgelerinde daha fazlasını okuyabilirsiniz .


5
Anladım. "Liste" nin "dondur" dan daha kapsamlı bir liste oluşturmasının özel bir nedeni var mı?
nitrl

2
bence pip listher şeyi listeliyor ve pip freezepip tarafından kurulan her şeyi yüklüyor.
karthikr

Hm, bu bir teori, ama yapmadığıma oldukça eminim pip install wsgiref.
nitrl

Python 3.2 wsgiref.egg-info, Lib dizininde bulunur, bu yüzden pip bunu bilir. Bunu pip ile [kaldıramazsınız] ve Python'un sonraki sürümleri meta veri dosyasını çıkarır, böylece görünmez.
Zooba

1
@leonid sonunda sürüm numarasından kurtulursanız, en son sürümü pypi'den yükler. Cevabı tamamen oku
karthikr

42

Bu sorunun ikinci kısmını cevaplamak için, iki paket gösterilen pip listancak pip freezevardır setuptools(easy_install olan) vepip kendisi.

Görünüşe pip freezegöre pip'in bağlı olduğu paketleri listelemiyor. Kullanabilirsiniz--all paketleri de göstermek bayrağı .

Gönderen belgeler :

--all

Çıktıda şu paketleri atlamayın: pip, setuptools, distribute, wheel


3
pip freeze--allayrıca gösterme seçeneği vardır : pip, setuptools, distribute, wheel pip.pypa.io/en/stable/reference/pip_freeze
Chananel P

daha az
Max Kleiner

38

Temel fark şudur: pip freeze bir requirements.txt dosyasına atılabilmesi ve daha sonra "dondurulmuş" ortamı yeniden oluşturmak için kullanılabilmesidir.

Başka bir deyişle, çalıştırabilirsiniz: pip freeze > frozen-requirements.txtbir makinede ve daha sonra farklı bir makinede veya temiz bir ortamda yapabilirsiniz: pip install -r frozen-requirements.txt ve yaptığınız orijinal ortamdaki gibi tam olarak aynı bağımlılıkların kurulu olduğu aynı ortamı elde edersiniz. frozen-requirements.txt dosyasını oluşturdu.


26

Her ikisinin de işlevselliğini şu şekilde açıklayan pip belgelerine bakın :

pip listesi

Düzenlenebilirler dahil olmak üzere kurulu paketleri listeleyin.

pip don

Yüklenen paketleri gereksinimler biçiminde çıktılar.

Yani iki fark var:

  1. Çıktı biçimi, freezedaha sonra pip install -rgereksinimleri yüklemek için kullanılabilecek standart gereksinim biçimini verir .

  2. Çıktı içeriği, pip listiçermeyen düzenlenebilir öğeleri içerir pip freeze.



6

pip listTÜM kurulu paketleri gösterir .

pip freezeSİZİNpip (veya pipenvbu aracı kullanıyorsanız) komutuyla yüklediğiniz paketleri gereksinimler biçiminde gösterir.

Bunun altında Açıklama Setuptools , pip , tekerleğin ne zaman yüklenir pipenv shellbenim sanal zarf oluşturur. Bu paketler edildi DEĞİL beni kullanarak yüklü pip:

test1 % pipenv shell
Creating a virtualenv for this project
Pipfile: /Users/terrence/Development/Python/Projects/test1/Pipfile
Using /usr/local/Cellar/pipenv/2018.11.26_3/libexec/bin/python3.8 (3.8.1) to create virtualenv
 Creating virtual environment...
<SNIP>
Installing setuptools, pip, wheel...
done.
 Successfully created virtual environment! 
<SNIP>

Şimdi, yalnızca cool-lib ve sampleproject yüklediğim ilgili komutların çıktısını gözden geçirin ve karşılaştırın ( biberli mısır bir bağımlılıktır):

test1 % pip freeze       <== Packages I'VE installed w/ pip

-e git+https://github.com/gdamjan/hello-world-python-package.git@10<snip>71#egg=cool_lib
peppercorn==0.6
sampleproject==1.3.1


test1 % pip list         <== All packages, incl. ones I've NOT installed w/ pip

Package       Version Location                                                                    
------------- ------- --------------------------------------------------------------------------
cool-lib      0.1  /Users/terrence/.local/share/virtualenvs/test1-y2Zgz1D2/src/cool-lib           <== Installed w/ `pip` command
peppercorn    0.6       <== Dependency of "sampleproject"
pip           20.0.2  
sampleproject 1.3.1     <== Installed w/ `pip` command
setuptools    45.1.0  
wheel         0.34.2

pip listesi - TÜMÜNÜ değil, kurulu paketleri gösterir. Resmi belgeleri ve Daniel Lahyani'nin yanıtını kontrol edin.
filler36

1
@ filler36: "Yüklendi" nin ima edildiğini düşündüm, ancak yine de belirsizliğin potansiyel bir karışıklık yaratmamasını sağlamak için geri bildiriminizi dahil ettim. Geri bildiriminiz için teşekkürler, çok
minnettarız
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.