Neden easy_install üzerinden pip kullanılır? [kapalı]


936

Bir tweet şunları okur:

Kendinizi yüzünüzü bıçaklamak istemiyorsanız easy_install kullanmayın. Pip kullanın.

Neden easy_install üzerinden pip kullanılır? Yok mu çoğunlukla PyPI ve paket yazarlarla fay yalan ? Bir yazar PyPI'ye bok kaynağı tarball yüklerse (örn: eksik dosyalar, kurulum.py yok), hem pip hem de easy_install başarısız olur. Kozmetik farklılıklar dışında, neden Python kullanıcıları (yukarıdaki tweet'te olduğu gibi) easy_install üzerinden pip'i güçlü bir şekilde destekliyor gibi görünüyor ?

(Diyelim ki topluluk tarafından sağlanan Distribute paketinden easy_install hakkında konuşuyoruz)


74
Bu soruyu görmeden önce ilgisiz bir soruyu "easy_install kullanma, pip kullan" diyerek yanıtladım. Şimdi bunu neden söylediğimi merak ediyorum ...
Daniel Roseman

21
Hala pip başarısız neden paketleri içine çalıştırmak ama easy_install kolları gayet iyi, bu yüzden ben de merak ediyorum.
kwatford

5
pyobjc-core, easy_install ile çalışan ancak pip ile çalışmayan bir paket örneğidir.
Marc Abramowitz

5
Dört yıl sonra python'a geri dönersek, ambalajlama durumu berbattır. 2014 ve daha da kötüye gitti. Anladığım kadarıyla, resmi python dokümanları bundan habersiz olsa da, kurulum araçlarının emilimi emildi, ancak ikisi de python 3'ün bir parçası olmayacak ve pip üçüncü bir tekerlek gibi asılı duruyor (pun amaçlı).
Andriy Drozdyuk

3
@drozzy: Mümkün olan en kötü zamanda geri geldin - bir grup çekirdek geliştirici, şeylerin o kadar dağınık olduğuna karar verdikten hemen sonra, sorunun çözülmesine dahil olmak zorunda kaldılar. setuptoolsPython 3'ün bir parçası değil pip, çünkü son kullanıcıların ihtiyaç duyduğu tek parça bu. (Ve pip install setuptools
PyPI'ye

Yanıtlar:


304

Buradaki cevapların çoğu 2015 için güncel değil ( Daniel Roseman'dan ilk kabul edilen cevap olmasa da ). İşte mevcut durum:

  • İkili paketler artık .whlyalnızca PyPI'de değil, aynı zamanda üçüncü taraf depolarında tekerlekler ( dosyalar) olarak dağıtılmaktadır. PyPI'de Christoph Gohlke'nin Windows için Uzantı Paketleri . piptekerlekleri idare edebilir; easy_installolumsuz.
  • Sanal ortamlar (3.4 ile birlikte gelir veya 2.6 + / 3.1 + ile eklenebilir virtualenv) çok önemli ve önemli bir araç haline gelmiştir (ve resmi belgelerde ); içerdikleri pipkutunun dışında, ama daha düzgün çalışmaz easy_install.
  • distributeDahil paketeasy_install artık korunmamaktadır. Üzerindeki gelişmeler setuptoolsyeniden birleştirildi setuptools. Yüklemeye çalışmak distributesadece setuptoolsbunun yerine yüklenir .
  • easy_install kendisi sadece yarı korunur.
  • Olguların tamamı nereye pipaşağı eskideneasy_install paketlenmemiş bir kaynak ağacından, bir DVCS deposundan, vs. kurulumundan uzun süredir devam ediyor; yapabilirsiniz pip install ., pip install git+https://.
  • pippython.org'dan resmi Python 2.7 ve 3.4+ paketleri ile birlikte gelir ve pipkaynaktan oluşturursanız varsayılan olarak bir önyükleme dahil edilir.
  • Paketlerin yüklenmesi, kullanılması ve oluşturulması ile ilgili çeşitli eksik belge parçaları Python Ambalaj Kullanım Kılavuzu ile değiştirilmiştir . Python'un Python Modüllerini Takma ile ilgili kendi belgeleri Kurmakla artık bu kullanıcı kılavuzuna dayanıyor ve açıkça pip"tercih edilen yükleyici programı" olarak adlandırılıyor.
  • pipAsla olmayacak yıllar boyunca başka yeni özellikler eklendi easy_install. Örneğin, pipbir gereksinimler dosyası oluşturarak ve ardından her iki tarafa tek bir komutla yükleyerek site paketlerinizi kopyalamayı kolaylaştırır. Veya şirket içi geliştirme için kullanmak üzere gereksinimler dosyanızı yerel bir repoya dönüştürmek. Ve bunun gibi.

easy_install2015 yılında kullanmayı bildiğim tek iyi neden, Apple'ın önceden yüklenmiş Python sürümlerini OS X 10.5-10.8 ile kullanmanın özel durumudur. Apple 10.5'ten beri dahil etti easy_install, ancak 10.10'dan itibaren hala içermiyorlar pip. 10.9+ ile, hala kullanmalısınız get-pip.py, ancak 10.5-10.8 için bunun bazı sorunları var, bu yüzden daha kolay sudo easy_install pip. (Genelde, easy_install pipkötü bir fikir değil, OS X bunu yapmak istediğini 10,5-10,8 için sadece bu.) Ayrıca, 10,5-10,8 dahil readlinebir bakıma easy_installetrafında kludge bilen fakat pipaynı zamanda istediğiniz yüzden değil sudo easy_install readlineyükseltmek istiyorsanız.


9
@drozzy: Belki. Ancak, 5 yıl içinde, yanıtı diğer tüm üyeler kadar güncel olmayacak, Daniel Roseman'ın zamansız olduğunu düşünün. Ayrıca, Python topluluğunun araya giren zamanda neden geri döndüğünü gösteren 5 yaşındaki kabul edilmiş bir cevaba işaret etmeyecek olsaydı cevabım iyi olmazdı pip.
abarnert

2
Pip'in bazı paketlenmiş sürümlerinin hatalı olduğunu ve pip'in kendini yükseltemediğini belirtmek gerekir. İronik olsun ya da olmasın, bu durumlarda en kolay çözüm easy_install -U pipya da yapmaktır easy_install3 -U pip.
analytik

"ama düzgün çalışma bile easy_install" Tekerlekler hâkim olduğu için bir süredir denememiş olmama rağmen bu benim tecrübem değildi. Ancak Christoph Gohlke'nin ikili dosyaları eskiden çalıştırılabilir yumurta olarak dağıtıldı. Arama easy_installüzerlerinde oldu sadece ben sanal ortama yüklenen bu paketleri alabilir ve öyle bana herhangi mide ekşimesi vermedi. easy_installArtık sanal kıskançlarla ne şekilde çalışmıyor ?
jpmc26

599

Ian Bicking'ın pip'e girişinden :

pip asıl olarak easy_install üzerinde aşağıdaki yollarla geliştirmek için yazılmıştır

  • Tüm paketler kurulumdan önce indirilir. Sonuç olarak kısmen tamamlanmış kurulum gerçekleşmez.
  • Konsolda faydalı çıktılar sunmaya özen gösterilir.
  • Eylemlerin nedenleri takip edilmektedir. Örneğin, bir paket kuruluyorsa, pip bu paketin neden gerekli olduğunu izler.
  • Hata mesajları faydalı olmalıdır.
  • Kod nispeten özlü ve uyumludur, bu da programlı olarak kullanımını kolaylaştırır.
  • Paketlerin yumurta arşivi olarak kurulması gerekmez, düz olarak kurulabilirler (yumurta meta verilerini korurken).
  • Diğer sürüm kontrol sistemleri için yerel destek (Git, Mercurial ve Bazaar)
  • Paketlerin kaldırılması.
  • Sabit gereksinim kümelerini tanımlamak ve bir paket kümesini güvenilir bir şekilde oluşturmak kolaydır.

63
"Hata mesajları" avantajı özellikle yeni kullanıcılar için çok büyük. Kolay kurulum, ölümcül hatalara benzeyen düzinelerce tükürmekle ünlüdür, ancak yüklemeyi başarılı bir şekilde yapmak için yaralanmak, böylece söylediği her şeyi görmezden gelmeyi öğrenene kadar kullanımı zorlaştırır. Pip ilk etapta bu şeyleri söylemekten vazgeçer.
Brandon Rhodes

1
@Glyph kullanarak bir avantaj söz konusudur easy_install pipüzerinde sudo apt-get install python-pip?
Dennis

2
Easy_install paket tabanlı dağıtımlarda bir sanal ağın dışında kullanmayın: workaround.org/easy-install-debian
Federico

11
@Dennis: kullanırken sudo apt-getUbuntu / Debian Python paketlerini kuracaktır /usr/lib/python/dist-packagesoysa sudo pipya sudo easy_installiçinde kuracak /local/lib/python/site-packagesve ne yazık ki Debian / Ubuntu paketleri genellikle pip aşina olmadığı farklı adları vardır. En iyi çözüm IMHO, virtualenv kullanmak ve pippaketlerinizi orada kurmaktır.
Mark Mikofski

2
Bunun güncellenmesi gerekiyor.
Andriy Drozdyuk

248

Başka-olarak lehine için henüz sözü edilmeyen-aklın Pip yeni hotness ve gelecekte kullanılmaya devam edecektir çünkü.

İnfografik-aşağıdan Packaging bugünkü hali bölümünde Otostopçunun Ambalaj v1.0'daki setuptools / easy_install öğesinin gelecekte kaybolacağını gösterir.

resim açıklamasını buraya girin

Burada, dağıtım araçlarının Setuptools ve easy_install öğelerinin yeni hotness ( dağıtma ve pip) ile değiştirileceğini gösteren başka bir bilgi grafiği bulunmaktadır . İken Pip hala yeni hotness olduğunu Distribute ile birleşti Setuptools'u sürümü ile 2013 yılında Setuptools v0.7.

resim açıklamasını buraya girin


47
Infographics FTW
WineSoaked

34
OTOH, ikinci grafik bir yıldır modası geçmiş. dağıtmak ömrünün sonuna ulaşacak ve (2'den başlayarak Python standart kütüphanesinde yer alan) distutils2 tarafından kullanılacaktır. Pysetup adında temel bir yükleyici parça veya distutils2 olarak sağlanır ve pip gelecekte de distutils2 üstünde ek özellikler sağlamaya devam eder.
Éric Araujo

7
aman tanrım çok teşekkür ederim Yıllardır python paketleme ile karıştırıldım ve ileriye doğru yarı yetkili bir yol görmek cesaret vericidir.
aaron


21
Bu "cevap" çok güncel değil ve sadece yanlış bile komik değil.
onlynone


116

REQUIREMENTS dosya.

Cidden, bunu her gün virtualenv ile birlikte kullanıyorum.


HIZLI BAĞIMLILIK YÖNETİMİ EĞİTİMİ, HALK

Gereksinim dosyaları, pip yoluyla yüklenen tüm paketlerin anlık görüntüsünü oluşturmanıza olanak tanır. Bu paketleri bir sanal ortamda kapsülleyerek, kod tabanınızın çok belirli bir paket kümesinde çalışmasını sağlayabilir ve bu kod tabanını başkalarıyla paylaşabilirsiniz.

Heroku'nun belgelerinden https://devcenter.heroku.com/articles/python

Sanal bir ortam oluşturur ve kabuğunuzu bu ortamı kullanacak şekilde ayarlarsınız. (bash / * nix talimatları)

virtualenv env
source env/bin/activate

Artık bu kabukla çalışan tüm python komut dosyaları bu ortamın paketlerini ve yapılandırmasını kullanacaktır. Artık bir paketi makinenize global olarak yüklemenize gerek kalmadan bu ortama yerel olarak kurabilirsiniz.

pip install flask

Artık hangi paketlerin yüklü olduğu hakkındaki bilgileri dökebilirsiniz

pip freeze > requirements.txt

Bu dosyayı sürüm denetiminde kontrol ettiyseniz, başka biri kodunuzu aldığında, kendi sanal ortamlarını kurabilir ve tüm bağımlılıkları aşağıdakilerle yükleyebilir:

pip install -r requirements.txt

Böyle tedium otomatikleştirmek her zaman harika.



pipreqsgereksinimler.txt dosyasını almak için kullanmalısınız . Yalnızca pipreq'leri çağırdığınız proje ile ilgili kütüphaneleri verecektir, böylece gereksinimleri ..txt sanal ortama değil projeye dayanacaktır.
SeF

83

pip ikili paketleri kurmaz ve Windows'ta iyi test edilmez.

, Windows genellikle varsayılan pip tarafından derleyici ile gelmiyor gibi olamaz orada kullanılabilir. easy_install yapabilirsiniz Windows için ikili paketleri yükleme.


3
İlginç, bunu hiç düşünmemiştim. pip aynı zamanda en azından Zope çalışanları tarafından kullanılan setuptools "ekstralar" özelliklerini de desteklemez.
Sridhar Ratnakumar

1
Bu, pip'in önceden oluşturulmuş ikili dosyaları kurması konusunda ısrar etmek yerine pencerelerde bir gcc ortamına ihtiyaç duyduğunun bir göstergesi mi?
WineSoaked

18
Windows için kullanılacak "doğru" derleyici Visual Studio'dur (2008 Python'un son sürümlerine inanıyorum). Bunu, ücretsiz sürümü bile yüklemek bir güçlüktür. Normal Windows üzerinde C uzantıları yükleme yolu önceden derlenmiş ikili değil. easy_install bunu destekler, pip desteklemez.
fuzzyman

8
Hala easy_install kullanmamın başlıca nedenleri budur.
Randy Syring

14
Yukarıdaki cevabın verilmesinden bu yana, artık pip'in ikili paketleri, Windows'a veya diğer platformlara kuramayacağı artık doğru değil. wheelİkili dağıtım biçimi bu mümkün kılar. C genişletme modüllerine sahip birçok üçüncü taraf paketi de çeşitli platformlar için üretilmiş tekerlekler olarak dağıtılıyor ve pip bunları otomatik olarak kurabiliyor. Örneğin, bkz. Pythonwheels.com
Ned Deily

76

GÜNCELLEME: bazılarının düşündüğü gibi setuptools, tersi distributegibi emildi . setuptools, en son distutilsdeğişiklikler ve tekerlek biçimi ile günceldir . Dolayısıyla, easy_installvepip hemen eşit düzeyde veya daha az bulunmaktadır.

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


5
Bu neden daha fazla desteklenmiyor? Cevaplar çok eski!
Andriy Drozdyuk

5
evet, en iyi cevaplar extreamly modası geçmiş
WKordos

2
Bu nedenle, easy_install ve pip aşağı yukarı eşit zeminde . Bu saçmalık. easy_installhala uzun zamandır olan şeydir ve pip onun üzerinde muazzam bir şekilde gelişir. easy_installSadece bir parçasıdır setuptoolsve pip amaçları değiştirmek neden kötü olanlar tartışmasız bir.
Piotr Dobrogost

25

Bulanık'ın cevabına ek olarak:

pip ikili paketleri kurmaz ve Windows'ta iyi test edilmez.

Windows varsayılan olarak bir derleyici ile gelmediğinden pip genellikle orada kullanılamaz. easy_install Windows için ikili paketler kurabilir.

İşte Windows'da bir numara:

  • easy_install <package>bir ikili binayı önlemek için ikili paketleri yüklemek için kullanabilirsiniz

  • pip uninstall <package>easy_install kullansanız bile kullanabilirsiniz .

Bu sadece benim için pencerelerde çalışan bir çözüm. Aslında hiç ikili dosyalar yoksa pip kullanırım.

Mevcut pip dokusuna bakın: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

Posta listesinde bunun için ne planlandığını soracağım.

İşte en son güncelleme:

İkili dosyaları yüklemek için yeni desteklenen yol olacak wheel! Henüz standartta değil, neredeyse. Mevcut sürüm hala bir alfa: 1.0.0a1

https://pypi.python.org/pypi/wheel

http://wheel.readthedocs.org/en/latest/

Kullanmak wheeliçin bir OS X yükleyici oluşturarak test edeceğimPySidewheelYumurta yerine . Geri dönüp bunun hakkında rapor vereceğim.

şerefe - Chris

Hızlı güncelleme:

Geçiş wheelneredeyse bitti. Çoğu paket destekliyorwheel .

İçin tekerlekler yapmaya söz verdim PySide ve bunu geçen yaz yaptım. Harika çalışıyor!

İPUCU: Birkaç geliştiriciler değiştirmeyi unutmayın çünkü, tekerlek biçimini destekleyecek şimdiye kadar başarısız distutilstarafından setuptools. Çoğu zaman, bu tek kelimeyi değiştirerek bu tür paketleri dönüştürmek kolaydır setup.py.


2
yukarıda güncellendi - Bence bekleme neredeyse bitti ;-)
Christian Tismer

Bunu tekrar güncellemeliyim, çünkü tekerlek 2014 baharında standart haline geldi. Aslında, böyle eski ipliklerin reklam sonsuzluğu değiştirilmemesi gerektiğini düşünüyorum, çünkü - eski cevaplar oldukça iyiydi - gerçeklik değiştiğinde her şeyi değiştirmek kolaydır. Ama sorunun asıl nedeni ortadan kalktığında adil mi?
Christian Tismer

3

Sadece easy_installbunun yerine kullanmak zorunda olduğum özel bir durumla tanıştım pip, ya da doğrudan kaynak kodlarını çekmek zorundayım.

Paket GitPythoniçin sürümpip çok eski, yani 0.1.7gelen easy_installen son0.3.2.rc1 .

Kullanıyorum Python 2.7.8. Ben altlık mekanizması hakkında emin değilim easy_installve pipfakat en azından bazı paketlerin sürümleri birbirinden farklı olabilir ve bazen easy_installdaha yeni bir sürümü ile biridir.

easy_install GitPython

6
Bunu şimdi kontrol ettim (zaman damgasına bakın) ve artık doğru değil: Hem pip hem de easy_install aynı şekilde çalıştı ve bugün GitPython 0.3.5 ile sonuçlandı. (Yalnızca OS X Yosemite üzerinde test edilmiştir). Platformunuz nedir? Lütfen girişinizi güncelleyin çünkü artık yanıltıcı.
Christian Tismer
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.