Sebuah tweet yang berbunyi:
Jangan gunakan easy_install, kecuali jika Anda suka menusuk wajah Anda. Gunakan pip.
Mengapa menggunakan pip di easy_install? Bukankah kesalahannya terletak pada PyPI dan penulis paket kebanyakan ? Jika seorang penulis mengunggah tarball sumber sampah (misalnya: file yang hilang, tidak ada setup.py) ke PyPI, maka baik pip dan easy_install akan gagal. Selain perbedaan kosmetik, mengapa orang Python (seperti dalam tweet di atas) tampaknya sangat menyukai pip daripada easy_install?
(Mari kita asumsikan bahwa kita berbicara tentang easy_install dari paket Distribute, yang dikelola oleh komunitas)
python
pip
setuptools
easy-install
pypi
Sridhar Ratnakumar
sumber
sumber
setuptools
bukan bagian dari Python 3 karenapip
itu, dan itulah satu-satunya bagian yang dibutuhkan pengguna akhir. (Dan pengembang yang ingin mendistribusikan pada PyPI jelas dapatpip install setuptools
, dan segala sesuatu yang mereka inginkan.)Jawaban:
Banyak jawaban di sini sudah ketinggalan zaman untuk tahun 2015 (meskipun yang awalnya diterima dari Daniel Roseman tidak). Inilah keadaan saat ini:
.whl
file) —tidak hanya di PyPI, tetapi di repositori pihak ketiga seperti Paket Ekstensi Christoph Gohlke untuk Windows .pip
dapat menangani roda;easy_install
tidak bisa.virtualenv
) telah menjadi alat yang sangat penting dan menonjol (dan direkomendasikan dalam dokumen resmi ); mereka termasuk dipip
luar kotak, tetapi bahkan tidak berfungsi dengan benareasy_install
.distribute
paket yang termasukeasy_install
dipertahankan tidak lagi. Perbaikan atassetuptools
digabungkan kembali kesetuptools
. Mencoba menginstaldistribute
hanya akan menginstalsetuptools
.easy_install
itu sendiri hanya dipertahankan semu.pip
dulunya lebih rendaheasy_install
dari — pemasangan dari source tree yang tidak dibongkar, dari repo DVCS, dll. — Sudah lama hilang; Anda bisapip install .
,pip install git+https://
.pip
datang dengan paket Python 2.7 dan 3.4+ resmi dari python.org, dan sebuahpip
bootstrap disertakan secara default jika Anda membangun dari sumber.pip
sebagai "program penginstal yang disukai".pip
selama bertahun-tahun yang tidak akan pernah adaeasy_install
. Sebagai contoh,pip
membuatnya mudah untuk mengkloning paket situs Anda dengan membangun file persyaratan dan kemudian menginstalnya dengan satu perintah di setiap sisi. Atau untuk mengonversi file persyaratan Anda ke repo lokal untuk digunakan untuk pengembangan in-house. Dan seterusnya.Satu-satunya alasan bagus yang saya tahu untuk digunakan
easy_install
pada tahun 2015 adalah kasus khusus menggunakan versi Python Apple yang sudah diinstal sebelumnya dengan OS X 10.5-10.8. Sejak 10.5, Apple telah memasukkaneasy_install
, tetapi pada 10.10 mereka masih belum memasukkanpip
. Dengan 10.9+, Anda masih harus menggunakannyaget-pip.py
, tetapi untuk 10.5-10.8, ini memiliki beberapa masalah, jadi lebih mudah untuk melakukannyasudo easy_install pip
. (Secara umum, itueasy_install pip
adalah ide yang buruk; itu hanya untuk OS X 10.5-10.8 yang ingin Anda lakukan ini.) Juga, 10.5-10.8 termasukreadline
dalam cara yangeasy_install
tahu bagaimana untuk berkeliaran tetapipip
tidak, jadi Anda juga inginsudo easy_install readline
jika Anda ingin memutakhirkan itu.sumber
pip
dalam waktu intervening.easy_install -U pip
ataueasy_install3 -U pip
.easy_install
" Ini bukan pengalaman saya, meskipun saya belum mencoba dalam beberapa saat karena roda sekarang mendominasi. Tapi biner Christoph Gohlke dulu didistribusikan sebagai telur yang dapat dieksekusi. Memanggileasy_install
mereka adalah satu - satunya cara saya bisa menginstal paket-paket itu ke lingkungan virtual, dan itu tidak pernah memberi saya mulas. Dengan cara apa tidakeasy_install
lagi berfungsi dengan virtual envs?Dari pengantar Ian Bicking sendiri ke pip :
sumber
easy_install pip
lebihsudo apt-get install python-pip
?sudo apt-get
Ubuntu / Debian akan menginstal paket Python di/usr/lib/python/dist-packages
sedangkansudo pip
atausudo easy_install
akan menginstal/local/lib/python/site-packages
dan sayangnya paket Debian / Ubuntu sering memiliki nama yang berbeda yang tidak akrab dengan pip. Solusi terbaik IMHO adalah dengan menggunakan virtualenv danpip
menginstal paket Anda di sana.Alasan lain — yang belum disebutkan — alasan untuk memilih pip adalah karena itu adalah panas yang baru dan akan terus digunakan di masa depan.
Infografis di bawah ini — dari bagian Keadaan Pengemasan Saat Ini di Panduan The Hitchhiker untuk Pengemasan v1.0 —menunjukkan bahwa setuptools / easy_install akan hilang di masa mendatang.
Berikut ini infografis lain dari dokumentasi distribusikan yang menunjukkan bahwa Setuptools dan easy_install akan digantikan oleh hotness baru— distribusikan dan pip . Sementara pip masih menjadi hal yang baru, Distribute bergabung dengan Setuptools pada 2013 dengan merilis Setuptools v0.7.
sumber
distribute
bergabung kembali dengansetuptools
.pip
bekerja.packaging
(distutils2
) tidak termasuk dalam Python 3.3 .Dua alasan, mungkin ada lebih banyak:
pip memberikan
uninstall
perintahjika instalasi gagal di tengah, pip akan membuat Anda dalam keadaan bersih.
sumber
PERSYARATAN file.
Serius, saya menggunakan ini dalam hubungannya dengan virtualenv setiap hari.
TUTORIAL MANAJEMEN DEPENDENSI CEPAT, ORANG
File persyaratan memungkinkan Anda untuk membuat snapshot dari semua paket yang telah diinstal melalui pip. Dengan mengenkapsulasi paket-paket itu dalam lingkungan virtual, Anda dapat membuat basis kode Anda bekerja dari satu set paket yang sangat spesifik dan berbagi basis kode itu dengan yang lain.
Dari dokumentasi Heroku https://devcenter.heroku.com/articles/python
Anda membuat lingkungan virtual, dan mengatur shell Anda untuk menggunakannya. (instruksi bash / * nix)
Sekarang semua skrip python dijalankan dengan shell ini akan menggunakan paket dan konfigurasi lingkungan ini. Sekarang Anda dapat menginstal paket secara lokal ke lingkungan ini tanpa perlu menginstalnya secara global pada mesin Anda.
Sekarang Anda dapat membuang info tentang paket mana yang diinstal
Jika Anda memeriksa file itu ke dalam kontrol versi, ketika orang lain mendapatkan kode Anda, mereka dapat mengatur lingkungan virtual mereka sendiri dan menginstal semua dependensi dengan:
Setiap saat Anda dapat mengotomatisasi kebosanan seperti ini luar biasa.
sumber
pipreqs
untuk mendapatkan file requirement.txt. Ini hanya akan memberikan pustaka yang terkait dengan proyek tempat Anda menelepon pipreqs, sehingga requirement.txt akan didasarkan pada proyek dan bukan pada virtualenv.pip tidak akan menginstal paket biner dan tidak diuji dengan baik pada Windows.
Karena Windows tidak datang dengan kompiler secara default, pip seringkali tidak dapat digunakan di sana. easy_install dapat menginstal paket biner untuk Windows.
sumber
wheel
Format distribusi biner membuat itu mungkin. Banyak paket pihak ketiga dengan modul ekstensi C kini juga didistribusikan sebagai roda yang dibuat untuk berbagai platform dan pip dapat menginstalnya secara otomatis. Lihat, misalnya, pythonwheels.comUPDATE:
setuptools
telah diserapdistribute
sebagai lawan dari sebaliknya, karena beberapa pemikiran.setuptools
up-to-date dengandistutils
perubahan terbaru dan format roda. Karenanya,easy_install
danpip
kurang lebih setara sekarang.Sumber: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name
sumber
easy_install
masih apa yang sudah lama dan pip sangat meningkat.easy_install
hanya bagian darisetuptools
dan bisa dibilang salah satu yang terburuk yang mengapa pip bertujuan untuk menggantinya.Sebagai tambahan untuk jawaban fuzzyman:
Berikut ini trik di Windows:
Anda dapat menggunakan
easy_install <package>
untuk menginstal paket biner untuk menghindari membangun binerAnda dapat menggunakan
pip uninstall <package>
bahkan jika Anda menggunakan easy_install.Ini hanya solusi untuk saya di windows. Sebenarnya saya selalu menggunakan pip jika tidak ada binari yang terlibat.
Lihat doku pip saat ini: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install
Ini pembaruan terbaru:
Cara baru yang didukung untuk menginstal binari akan menjadi
wheel
! Itu belum dalam standar, tetapi hampir. Versi saat ini masih berupa alfa: 1.0.0a1https://pypi.python.org/pypi/wheel
http://wheel.readthedocs.org/en/latest/
Saya akan menguji
wheel
dengan membuat installer OS X untukPySide
menggunakanwheel
bukan telur. Akan kembali dan melaporkan tentang ini.sorakan - Chris
Pembaruan cepat:
Transisi ke
wheel
hampir berakhir. Sebagian besar paket mendukungwheel
.Saya berjanji untuk membuat roda
PySide
, dan saya melakukannya pada musim panas lalu. Bagus sekali!PETUNJUK: Beberapa pengembang gagal sejauh ini untuk mendukung format roda, hanya karena mereka lupa untuk mengganti
distutils
dengansetuptools
. Seringkali, mudah untuk mengonversi paket-paket tersebut dengan mengganti satu kata ini disetup.py
.sumber
Hanya bertemu satu kasus khusus yang saya harus menggunakan
easy_install
bukanpip
, atau saya harus menarik kode sumber secara langsung.Untuk paket
GitPython
, versi dalampip
terlalu lama, yang mana0.1.7
, sedangkan yang darieasy_install
adalah yang terbaru0.3.2.rc1
.Saya menggunakan
Python 2.7.8
. Saya tidak yakin tentang mekanisme yang mendasarieasy_install
danpip
, tetapi setidaknya versi dari beberapa paket mungkin berbeda satu sama lain, dan kadang-kadangeasy_install
adalah satu dengan versi yang lebih baru.sumber