Perbandingan keluaran menunjukkan perbedaan:
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
Dokumentasi Pip menyatakan
freeze Output installed packages in requirements format.
list List installed packages.
tapi apa itu "format persyaratan", dan mengapa pip list
menghasilkan daftar yang lebih komprehensif pip freeze
?
python
python-2.7
python-3.x
pip
nitrit
sumber
sumber
Jawaban:
Saat Anda menggunakan
virtualenv
, Anda dapat menentukan arequirements.txt
file untuk menginstal semua dependensi.Penggunaan tipikal:
Paket-paket tersebut harus dalam format tertentu agar
pip
dapat dipahami, yaituItu adalah "format persyaratan".
Di sini,
django==1.4.2
tersiratdjango
versi instal1.4.2
(meskipun yang terbaru adalah 1.6.x). Jika Anda tidak menentukan==1.4.2
, versi terbaru yang tersedia akan diinstal.Anda dapat membaca lebih lanjut di " Virtualenv and pip Basics ", dan dokumentasi resmi " Requirements File Format ".
sumber
pip list
daftar semuanya, danpip freeze
menginstal semua yang diinstal oleh pip.pip install
wsgiref
.wsgiref.egg-info
dalam direktori Lib, itulah sebabnya pip tahu tentang itu. Anda tidak dapat [membatalkan] menginstalnya dengan pip, dan versi Python yang lebih baru menghilangkan file metadata sehingga tidak akan muncul.Untuk menjawab bagian kedua dari pertanyaan ini, dua paket ditampilkan di
pip list
tetapi tidakpip freeze
yangsetuptools
(yang easy_install) danpip
dirinya sendiri.Sepertinya
pip freeze
tidak mencantumkan paket yang bergantung pada pip itu sendiri. Anda dapat menggunakan--all
bendera untuk menunjukkan juga paket-paket itu.Dari dokumentasi :
sumber
pip freeze
memiliki opsi--all
untuk ditampilkan juga:pip, setuptools, distribute, wheel
pip.pypa.io/en/stable/reference/pip_freezePerbedaan utamanya adalah hasil dari
pip freeze
dapat dibuang ke file Requirement.txt dan digunakan nanti untuk membangun kembali lingkungan "beku".Dengan kata lain Anda dapat menjalankan:
pip freeze > frozen-requirements.txt
pada satu mesin dan kemudian pada mesin yang berbeda atau pada lingkungan yang bersih yang dapat Anda lakukan:pip install -r frozen-requirements.txt
dan Anda akan mendapatkan lingkungan yang identik dengan dependensi yang sama persis terpasang seperti yang Anda miliki di lingkungan asli tempat Anda menghasilkan frozen-requirement.txt.sumber
Lihat dokumentasi pip , yang menjelaskan fungsionalitas keduanya sebagai:
daftar pip
pip freeze
Jadi ada dua perbedaan:
Format keluaran,
freeze
memberi kita format persyaratan standar yang dapat digunakan nanti denganpip install -r
untuk menginstal persyaratan.Output konten,
pip list
termasuk editable yangpip freeze
tidak.sumber
pip list
menunjukkan SEMUA paket yang diinstal.pip freeze
menunjukkan paket yang ANDA instal melaluipip
(ataupipenv
jika menggunakan alat itu) perintah dalam format persyaratan.Catatan di bawah bahwa setuptools , pip , wheel diinstal saat
pipenv shell
membuat amplop virtual saya. Paket-paket ini TIDAK diinstal oleh saya menggunakanpip
:Sekarang tinjau & bandingkan output dari masing-masing perintah di mana saya hanya menginstal cool-lib dan sampleproject (di mana merica adalah ketergantungan):
sumber