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.