Pertanyaan Mengapa menggunakan pip melalui easy_install? [Tutup]


SEBUAH menciak membaca:

Jangan gunakan easy_install, kecuali Anda   seperti menusuk dirimu sendiri di wajah.   Gunakan pip.

Mengapa menggunakan pip melalui easy_install? Bukankah itu kesalahan terletak dengan PyPI dan penulis paket kebanyakan? Jika seorang penulis mengunggah tarbal sumber omong kosong (misalnya: file yang hilang, tanpa setup.py) ke PyPI, maka baik pip dan easy_install akan gagal. Selain perbedaan kosmetik, mengapa orang Python (seperti dalam tweet di atas) tampaknya dengan kuat mendukung pip melalui easy_install?

(Anggaplah kita sedang berbicara tentang easy_install dari paket Distribute, yang dikelola oleh komunitas)


883
2017-07-10 18:35


asal


Jawaban:


Banyak jawaban di sini sudah ketinggalan zaman untuk tahun 2015 (meskipun yang pertama diterima dari Daniel Roseman tidak). Berikut keadaan terkini:

  • Paket biner sekarang didistribusikan sebagai roda (.whl file) —bukan hanya di PyPI, tetapi di repositori pihak ketiga seperti Paket Perpanjangan Christoph Gohlke untuk Windows. pip bisa menangani roda; easy_install tidak bisa.
  • Lingkungan virtual (yang terintegrasi dengan 3.4, atau dapat ditambahkan ke 2.6 + / 3.1 + dengan virtualenv) telah menjadi alat yang sangat penting dan menonjol (dan direkomendasikan di dokumen resmi); mereka termasuk pip di luar kotak, tetapi bahkan tidak berfungsi dengan baik easy_install.
  • Itu distribute paket yang disertakan easy_install tidak lagi dipertahankan. Perbaikannya selesai setuptools digabungkan kembali setuptools. Mencoba menginstal distribute hanya akan menginstal setuptools sebagai gantinya.
  • easy_install sendiri hanya dipelihara semu.
  • Semua kasus di mana pip dulunya lebih rendah easy_install—menginstal dari pohon sumber yang belum diolah, dari repo DVCS, dll. - telah lama hilang; kamu bisa pip install ., pip install git+https://.
  • pip hadir dengan paket resmi Python 2.7 dan 3.4+ dari python.org, dan a pip bootstrap disertakan secara default jika Anda membangun dari sumber.
  • Berbagai dokumentasi yang tidak lengkap tentang pemasangan, penggunaan, dan paket bangunan telah digantikan oleh Panduan Pengguna Kemasan Python. Dokumentasi Python sendiri Memasang Modul Python sekarang mengacu pada panduan pengguna ini, dan secara eksplisit memanggil pip sebagai "program penginstal yang disukai".
  • Fitur baru lainnya telah ditambahkan pip selama bertahun-tahun yang tidak akan pernah ada easy_install. Sebagai contoh, pip membuatnya mudah untuk mengkloning paket situs Anda dengan membuat file persyaratan dan kemudian memasangnya dengan satu perintah di setiap sisi. Atau untuk mengonversi file persyaratan Anda menjadi repo lokal untuk digunakan dalam pembangunan in-house. Dan seterusnya.

Satu-satunya alasan bagus yang saya tahu untuk digunakan easy_install pada tahun 2015 adalah kasus khusus menggunakan versi Python pra-instal Apple dengan OS X 10.5-10.8. Sejak 10.5, Apple sudah termasuk easy_install, tetapi pada 10.10 mereka masih belum termasuk pip. Dengan 10.9+, Anda tetap harus menggunakan get-pip.py, tetapi untuk 10.5-10.8, ini memiliki beberapa masalah, jadi lebih mudah untuk melakukannya sudo easy_install pip. (Secara umum, easy_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 termasuk readline dengan cara itu easy_install tahu cara berkeliaran di sekitar tetapi pip tidak, jadi Anda juga ingin sudo easy_install readline jika Anda ingin memutakhirkan itu.


260
2018-05-23 03:10



Dari Ian Bicking sendiri pengantar pip:

pip awalnya ditulis untuk memperbaiki easy_install dengan cara-cara berikut

  • Semua paket diunduh sebelum instalasi. Instalasi yang selesai sebagian tidak terjadi sebagai hasilnya.
  • Perawatan diambil untuk menyajikan keluaran yang berguna di konsol.
  • Alasan untuk tindakan terus dilacak. Misalnya, jika paket sedang diinstal, pip terus melacak mengapa paket itu diperlukan.
  • Pesan kesalahan harus berguna.
  • Kode ini relatif ringkas dan kohesif, membuatnya lebih mudah digunakan secara terprogram.
  • Paket tidak harus dipasang sebagai arsip telur, mereka dapat dipasang rata (sambil menjaga metadata telur).
  • Dukungan asli untuk sistem kontrol versi lain (Git, Mercurial, dan Bazaar)
  • Penghapusan instalasi paket.
  • Sederhana untuk menentukan set persyaratan yang tetap dan dapat diandalkan untuk menghasilkan serangkaian paket.

581
2017-07-10 19:32



Alasan lain - seperti yang belum disebutkan - alasan untuk disukai pip karena ini adalah panas baru dan akan terus digunakan di masa depan.

Infografis di bawah ini — dari Kondisi Kemasan Saat Ini bagian dalam The Hitchhiker's Guide to Packaging v1.0-menunjukkan bahwa setuptools / easy_install akan hilang di masa depan.

enter image description here

Ini infografis lain dari mendistribusikan dokumentasi menunjukkan itu Setuptools dan easy_install akan digantikan oleh hotness baru—mendistribusikan dan pip. Sementara pip masih panas baru, Mendistribusikan digabung dengan Setuptools pada tahun 2013 dengan rilis Setuptools v0.7.

enter image description here


241
2018-01-26 15:19



Dua alasan, mungkin ada lebih banyak:

  1. pip menyediakan uninstall perintah

  2. jika instalasi gagal di tengah, pip akan membuat Anda dalam keadaan bersih.


163
2017-07-10 18:56



File PERSYARATAN.

Serius, saya menggunakan ini bersama dengan virtualenv setiap hari.


PENGELOLAAN MANAJEMEN DEPENDENSI CEPAT, GUYS

Persyaratan file memungkinkan Anda untuk membuat snapshot dari semua paket yang telah diinstal melalui pip. Dengan mengenkapsulasi paket-paket tersebut di lingkungan virtual, Anda dapat membuat basis kode Anda bekerja dari paket paket yang sangat spesifik dan membagikan basis kode tersebut 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)

virtualenv env
source env/bin/activate

Sekarang semua skrip python yang 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 di komputer Anda.

pip install flask

Sekarang Anda dapat membuang info tentang paket yang diinstal

pip freeze > requirements.txt

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:

pip install -r requirements.txt

Setiap kali Anda dapat mengotomatisasi kebosanan seperti ini luar biasa.


110
2017-07-11 13:28



pip tidak akan menginstal paket biner dan tidak teruji dengan baik di Windows.

Seperti Windows tidak datang dengan kompilator dengan pip default sering tidak bisa digunakan di sana. easy_install bisa instal paket biner untuk Windows.


78
2017-07-11 18:05



MEMPERBARUI: setuptools telah terserap distribute sebagai lawan dari sebaliknya, seperti beberapa pemikiran. setuptools terbaru dengan yang terbaru distutils perubahan dan format roda. Karenanya, easy_install dan pip kurang lebih sejajar sekarang.

Sumber: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name


71
2018-02-22 20:22