Pip ve conda arasındaki fark nedir?


728

pipPython paketleri için bir paket yöneticisi olduğunu biliyorum . Ancak, IPython'un web sitesinde condaIPython'u yüklemek için kullanıldığını gördüm .

pipIPython'u yüklemek için kullanabilir miyim ? condaZaten sahip olduğumda neden başka bir python paket yöneticisi olarak kullanmalıyım pip?

Arasındaki fark nedir pipve conda?


Kurulum sayfasını dikkatlice okuduğunuzda , pip ile kurmak için tam talimatı görürsünüz ve conda/ enpgkaşağıdakileri hedef alır new users who want to get up and running with minimal effort: gölgelik / anaconda, sistem python'una (venv gibi ama daha güçlü) müdahale etmeyen bağımsız bir ortamdır. BTW IPyhton, iPython değil (büyük harf I)
Matt

3
Bir fark pip tarafından conda'dan çok daha fazla şey yüklenebilmesidir: pip tek bir komutta pypi'den herhangi bir şey kurabilir. conda üç komut gerektirir: iskelet, derleme, kurulum ve muhtemelen işe yaramazsa daha fazlası. pip bir komutta github veya kaynaktan herhangi bir şey yükleyebilir. conda, özellikle belgelerin her zaman yanlış / güncel görünmediği için kolay olmayan bir "tarif" yazmayı gerektirir.
endolith

5
İlgili soru: Piponun conda üzerindeki avantajları nelerdir? Aşağıda birçok Anaconda savunuculuğunu görüyorum, ama pip için hiçbir şey yok. Anakonda çok büyükse pip neden hala standart?
Brian Postow

24
Bu alıntıyı aydınlatıcı buluyorum: " Pip bir paket yöneticisidir ve Virtualenv bir çevre yöneticisidir. Conda her ikisi de." ( ref. )
Atcold

1
Gözlem: Conda'nın bir milyon paket indirmeyi ima ettiğini düşünürdüm, ama bu artık doğru değil: aslında sadece paket yöneticisi gibi görünen miniconda yükleyebilirsiniz, conda.io/docs/install/quick.html
Hugh Perkins

Yanıtlar:


524

Conda blogundan alıntı :

Python dünyasında uzun süredir yer alan, hepimiz pip, easy_install ve virtualenv'in farkındayız, ancak bu araçlar tüm özel gereksinimlerimizi karşılamadı. Ana sorun, kaynak kodlarında bir setup.py içermeyen ve ayrıca Python'un sitesine dosya yüklemeyen HDF5, MKL, LLVM, vb. Gibi Python olmayan kitaplık bağımlılıklarını ihmal ederek Python'a odaklanmış olmalarıdır. -paketler dizini.

Bu yüzden Conda, yaptıklarından daha fazlasını yapmayı amaçlayan bir paketleme aracı ve yükleyicisidir pip; Python paketlerinin yanı sıra Python paketlerinin dışındaki kütüphane bağımlılıklarını da ele alın . Conda da virtualenvyaptığı gibi sanal bir ortam yaratır .

Bu nedenle, Conda , hem Python hem de Python olmayan kurulum görevlerini gerçekleştirmenizi sağlayan başka bir araç olan Buildout ile karşılaştırılmalıdır .

Conda yeni bir paketleme biçimi pipsunduğundan Conda'yı birbirinin yerine kullanamazsınız ; pipConda paket biçimini yükleyemiyor. Sen (yükleyerek yan iki araç yan kullanabilirsiniz pipile conda install pip) ama onlar da birlikte yok.

Bu cevap yazma beri Anaconda bir yayınlamıştır üzerinde yeni bir sayfa anlama Conda ve Pip yankıları bu yanı,:

Bu, conda ve pip arasındaki temel farkı vurgular. Pip, Python paketlerini kurarken, conda herhangi bir dilde yazılmış yazılım içerebilen paketleri kurar. Örneğin, pip kullanmadan önce, bir sistem paketi yöneticisi veya bir yükleyici indirip çalıştırarak bir Python yorumlayıcısı kurulmalıdır. Conda ise Python paketlerinin yanı sıra Python yorumlayıcısını da doğrudan kurabilir.

ve dahası

Zaman zaman, bir conda paketi olarak mevcut olmayan ancak PyPI'de bulunan ve pip ile kurulabilen bir pakete ihtiyaç vardır. Bu durumlarda, hem conda hem de pip kullanmaya çalışmak mantıklıdır.


18
Açıklaman için teşekkürler. Yine de, Conda'nın pip yerine geçip geçemeyeceği konusunda kafam karıştı mı? Conda, pip'in yapabileceği her şeyi yapabilir mi?
lazywei

10
@lazywei: Bunun olabileceğini sanmıyorum; Örneğin Conda, tekerlek arşivi biçimini destekliyor gibi görünmüyor. Farklı amaçları var.
Martijn Pieters

45
@ naught101 "Sadece bir tarif yarat" Bu yazmak kadar kolay değil pip install.
endolith

23
Bazıları, farklı paketi hariç aynı paketi yüklemek için pip ve conda kullanırsanız, bunları içe aktarırken python'un kullanması durumunda ne olacağını açıklayabilir mi?
Lance Ruo Zhang

4
@jrh: Temel bir özellik olarak değil, OS paket yöneticisini kullanırken aynı paketin birden çok sürümünü yan yana yükleyemezsiniz. Conda , her biri belirli sürümlerde kendi kurulu paketlerinin bulunduğu ortamları yönetir . Bu nedenle, proje A, bir süre önce geliştirilmiş olsa da, proje B aynı kütüphanenin en yeni sürümünü gerektirirken, Foo kütüphanesinin eski bir sürümüne (projeyi daha yeni bir sürümle çalışacak şekilde yükseltmek için kaynak yok) hala yapışabilir.
Martijn Pieters

246

Kısa bir özet:

bip

  • Yalnızca Python paketleri.
  • Her şeyi kaynaktan derler. EDIT: pip şimdi varsa, ikili tekerlekler yükler.
  • Çekirdek Python topluluğu tarafından kutsanmış (yani, Python 3.4+ pip otomatik olarak önyükleme yapan kod içerir).

Conda

  • Python agnostik. Mevcut paketlerin ana odağı Python içindir ve aslında Conda'nın kendisi Python'da yazılmıştır, ancak C kütüphaneleri, R paketleri veya gerçekten herhangi bir şey için Conda paketlerine de sahip olabilirsiniz.
  • İkili dosyaları yükler. conda buildPaketleri kaynaktan conda installderleyen bir araç var , ancak kendisi zaten oluşturulmuş Conda paketlerinden bir şeyler yüklüyor.
  • Dış. Conda, Continuum Analytics tarafından sağlanan Python dağıtımı olan Anaconda'nın paket yöneticisidir, ancak Anaconda'nın dışında da kullanılabilir. Mevcut bir Python kurulumuyla pip kurarak kullanabilirsiniz (mevcut bir kurulumu kullanmak için iyi bir nedeniniz yoksa bu önerilmez).

Her iki durumda da:

  • Yazan: Python
  • Açık kaynak (Conda BSD ve pip MIT)

Conda'nın ilk iki kurşun noktası, birçok paket için pip üzerinde avantaj sağlayan şeydir. Pip kaynaktan yüklendiğinden, kaynak kodunu derleyemiyorsanız, onunla bir şeyler yüklemek acı verici olabilir (bu özellikle Windows için geçerlidir, ancak paketlerde bazı zor C veya FORTRAN kitaplığı varsa Linux'ta bile doğru olabilir bağımlılıklar). Conda ikili dosyadan kurulur, yani birisi (örn. Continuum) paketi derlemek için çok uğraşmıştır ve bu nedenle kurulum kolaydır.

Kendi paketlerinizi oluşturmakla ilgileniyorsanız bazı farklılıklar da vardır. Örneğin, pip, kurulum araçlarının üzerine inşa edilirken Conda, bazı avantajları olan (statik ve tekrar Python agnostik gibi) kendi formatını kullanır.


21
pip artık her şeyi kaynaktan oluşturmuyor. Bir tekerlek mevcutsa, pip install --use-wheel <package>yerleşik bir paket kuracaktır. Buraya bakın: wheel.readthedocs.org/en/latest . Bununla birlikte, tekerleğe ilişkin kişisel deneyimim, yalnızca akademik olması için çok az bilimsel tekerlek paketinin mevcut olmasıdır. Ve elbette, pipetleme kurulum ortamınız tam olarak doğru ayarlanmamışsa çoğunlukla pencerelerde çalışmaz. Şu anda, conda ftw.
Caleb Hattingh

4
Tekerlekler hala yeni ve varsayılan olarak kullanılmıyor, bu yüzden henüz gerçekten çok fazla olmaması şaşırtıcı değil. Tekerlek yine de "Python'a özgü" kategorisine uyuyor, yani Python olmayan paketler veya Python olmayan paketlere bağlı Python paketleri için uygun olmayabilir.
asmeurer

4
Bunu küçümsemek zorunda kaldım: ikinci mermi noktası şimdi sadece tarihsel bir not, ama daha sonra da devam ediyorsunuz. Günümüzde ana fark pip'in bir paket yöneticisi olması ve conda'nın daha çok bir çevre yöneticisidir.
Shep

9
Pip'in kaynaktan derlenebileceği doğrudur, ancak daha fazla paket tekerleğe taşındıkça bu gittikçe daha az sıklaşmaktadır: bu gün pip ile ihtiyaç duyduğum şeylerin çoğunu birkaç saniye içinde kurabilirim. Bu yüzden bu cevap yanlış değil, pip son birkaç yılda oldukça geliştiği için biraz modası geçmiş
Shep

4
O gelmiştir asla o Pip sadece kaynağından yükleyebilir doğruydu. Tekerleklerden önce, varsayılan ikili kurulum formatı ve Windows kurulumları için önerilen dağıtım formatı olarak yumurtalarımız vardı ve pip, mevcut en iyi seçenekse yumurta kuracaktı (ve yine de kuracak).
Martijn Pieters

96

Diğer cevaplar ayrıntıların adil bir açıklamasını veriyor, ancak bazı üst düzey noktaları vurgulamak istiyorum.

pip, python paketlerinin kurulumunu, yükseltilmesini ve kaldırılmasını kolaylaştıran bir paket yöneticisidir . Ayrıca sanal python ile çalışır ortamlarıyla .

conda herhangi bir yazılım ( paket yükleme, yükseltme ve kaldırma) için paket yöneticisidir . Sanal sistemle de çalışır ortamlarıyla .

Conda tasarımının amaçlarından biri, bir veya daha fazla python sürümünün sadece küçük bir parçası olabileceği, kullanıcılar tarafından gerekli olan tüm yazılım yığını için paket yönetimini kolaylaştırmaktır. Bu, lineer cebir gibi düşük seviyeli kütüphaneleri, Windows'ta mingw gibi derleyicileri, editörleri, Hg ve Git gibi sürüm kontrol araçlarını veya dağıtım ve yönetim gerektiren her şeyi içerir. .

Sürüm yönetimi için pip, birden fazla python arasında geçiş yapmanıza ve yönetmenize izin verir ortamı .

Conda birden fazla genel amaçlı ortam arasında geçiş yapmanıza ve yönetmenize olanak tanır C-kitaplıkları veya derleyicileri veya test paketleri veya veritabanı motorları gibi sürüm numaralarında çok sayıda başka şeyin değişebileceği birden .

Conda Windows merkezli değildir, ancak Windows'ta derleme gerektiren karmaşık bilimsel paketlerin yüklenmesi ve yönetilmesi gerektiğinde şu anda mevcut olan üstün çözümdür.

Windows'ta pip aracılığıyla bu paketlerin çoğunu derlemeye çalışırken ne kadar zaman kaybettiğimi düşündüğümde ağlamak ya da pip installderleme gerektiğinde başarısız oturumlarda hata ayıklamak istiyorum .

Son bir nokta olarak, Continuum Analytics ayrıca düzenli paket geliştiricilerinin paket kullanıcılarının kullanabilecekleri kendi özel (yerleşik!) Yazılım yığınlarını oluşturmalarına izin vermek için (ücretsiz) binstar.org (şimdi anaconda.org olarak adlandırılmaktadır ) barındırmaktadır conda install.


4
Son noktanıza göre, üçüncü taraf conda-forge projesi hızla Anaconda paketlerinin yayınlanmasında endüstri standardı yaklaşım haline geldi. Kısa bir süre önce , çok fizikli biyoloji simülatörümüz için birkaç conda-forge-host paketini yayınladık - ve işlemi yeterince öneremiyoruz . Conda-forge için yeni tarifler göndermek için GitHub PR tabanlı bir hakem incelemesi bileşeni var, ancak conda-forge otomasyonu açısından avantajlar açık zaman yatırımından ağır basar. Bam!
Cecil Curry

@CecilCurry Kodumu içe aktardım, mac'uma Kerasanaconda yükledim ve Keras hem condayüklü hem de pipyüklü. Peki, kodumu terminalde çalıştırırken, hangisinin keras( pipbir veya condabir) içe aktarıldığını nasıl bilebilirim ?
KPMG

25

Sizi daha fazla karıştırmamak için, aynı zamanda conda ortamınızdaki pip'i kullanabilirsiniz, bu da yukarıdaki genel python'a özgü yöneticilerin yorumlarını doğrular.

conda install -n testenv pip
source activate testenv
pip <pip command>

ayrıca herhangi bir ortamın varsayılan paketlerine pip ekleyebilirsiniz, böylece her seferinde mevcut olur, böylece yukarıdaki snippet'i takip etmek zorunda kalmazsınız.


Bunun tavsiye edilmediğini mi düşündüm?
endolith

8
Conda içinde pip kullanılması tamamen önerilir. Conda kullanarak kurmak daha iyidir, ancak conda yapısına sahip olmayan paketler için pip kullanmak tamamen kabul edilebilir.
Bradley Kreider

2
nit: cümlesi gibi fully supportedmi görünüyor ? fully recommendedima eder, pip kullanmak, condadan daha iyi, bir konda çevre içinde, aklımda, ne demek istediğinden emin değilim?
Hugh Perkins

22

Conda'dan Veri Bilimi makalesinden Continuum web sitesine alıntı :

Conda ve Pip Karşılaştırması

Python programcıları muhtemelen PyPI'den paketleri indirmek ve gereksinimlerini yönetmek için pip'e aşinadır. Hem conda hem de pip paket yöneticileri olmasına rağmen çok farklılar:

  • Pip, Python paketleri için özeldir ve conda dile bağlı değildir, yani paketleri herhangi bir dilden yönetmek için conda'yı kullanabiliriz Pip kaynaklardan derler ve conda ikili dosyaları yükleyerek derleme yükünü kaldırır
  • Conda yerel olarak dil bilincine sahip olmayan ortamlar yaratırken pip sadece Python ortamlarını yönetmek için virtualenv'e güvenir. Örneğin, bir conda paketi olmayan, ancak pip aracılığıyla kullanılabilen bir python paketi yüklemek için, sadece şunu çalıştırın:
conda install pip
pip install gensim

15

Conda'dan Alıntı : Mitler ve Kavram Yanılgıları (kapsamlı bir açıklama):

...

Efsane # 3: Conda ve pip doğrudan rakiplerdir

Gerçek: Conda ve pip farklı amaçlara hizmet eder ve yalnızca küçük bir görev alt kümesinde doğrudan rekabet eder: Python paketlerini yalıtılmış ortamlara kurmak.

Açılımı Pip, P ip ben nstalls P , ackages Python'un resmi makamlarca onaylanmış paket yöneticisidir ve en yaygın Python Paketi Index (PyPI) yayınlanan paketleri yüklemek için kullanılır. Hem pip hem de PyPI, Python Paketleme Kurumu (PyPA) tarafından yönetilir ve desteklenir.

Kısacası pip, Python paketleri için genel amaçlı bir yöneticidir; conda, dile bağlı agnostik bir platformlar arası çevre yöneticisidir. Kullanıcı için en dikkat çekici ayrım muhtemelen şudur: pip, herhangi bir ortama python paketleri kurar; conda herhangi bir paketi conda ortamlarına kurar. Yaptığınız tek şey Python paketlerini yalıtılmış bir ortama kurmaksa, conda ve pip + virtualenv çoğunlukla değiştirilebilir, bağımlılık işleme ve paket kullanılabilirliğinde bazı farklar vardır. Yalıtılmış ortamla, sistem Python kurulumunuzu değiştirmeden paketleri kurabileceğiniz bir conda-env veya virtualenv kastediyorum.

Myth # 2'yi bir kenara bırakırsak, sadece Python paketlerinin kurulumuna odaklanırsak, conda ve pip farklı kitlelere ve farklı amaçlara hizmet eder. Örneğin, Python paketlerini mevcut bir sistem Python yüklemesi içinde yönetmek istiyorsanız, conda size yardımcı olamaz: tasarım gereği, paketleri yalnızca conda ortamlarına yükleyebilir. Örneğin, harici bağımlılıklara dayanan çok sayıda Python paketi ile çalışmak istiyorsanız (NumPy, SciPy ve Matplotlib yaygın örneklerdir), bu bağımlılıkları anlamlı bir şekilde izlemek, pip size yardımcı olamaz: tasarımla, Python paketlerini ve yalnızca Python paketlerini yönetir.

Conda ve pip rakip değil, farklı kullanıcı gruplarına ve kullanım şekillerine odaklanan araçlar.


1
Bunun pazar konumlandırma perspektifinin ötesinde gerçekten doğru olduğundan emin değilim. Örneğin, üç tür yükleme sunan pytorch'a bakın: conda, pip, kaynak, pytorch.org ve tavsiye eder: conda
Hugh Perkins

2
"Python paketlerini yalıtılmış ortamlara kurmak", çoğu Python geliştiricisinin pip için kullandığı ana şeydir.
Nick

@ Geliştirici zaten 'o' sanal ortamda olduğunda değil mi? Bence pip sanal ortamda çalışıyor ve paketi bir sistem için kuruluyormuş gibi yüklüyor. eğer yanılıyorsam lütfen beni düzeltin.
Chan Kim

12

WINDOWS kullanıcıları için

"standart" paketleme araçlarının durumu son zamanlarda iyileşmektedir:

  • pypi'nin kendisinde artık sept itibariyle tekerlek paketlerinin% 48'i var. 11th 2015 (Mayıs 2015'teki% 38'den Eylül 2014'teki% 24'ten),

  • tekerlek formatı artık en son python 2.7.9'da kullanıma hazır olarak destekleniyor,

"standart" + "ince ayarlar" paketleme araçları durumu da gelişiyor:

  • neredeyse tüm bilimsel paketleri tekerlek biçiminde http://www.lfd.uci.edu/~gohlke/pythonlibs ,

  • mingwpy projesi, bir gün Windows kullanıcılarına bir 'derleme' paketi getirerek, gerektiğinde her şeyi kaynaktan yüklemeye izin verebilir.

"Conda" ambalajı, hizmet verdiği pazar için daha iyi durumdadır ve "standart" ın iyileştirilmesi gereken alanları vurgular .

(ayrıca, standart tekerlek sisteminde ve konda sistemde veya yapıda bağımlılık spesifikasyonu çoklu çaba, çok pitonik değildir, tüm bu ambalaj 'çekirdek' tekniklerinin bir çeşit PEP aracılığıyla birleşebilmesi iyi olurdu)



2

İPython'u kurmak için pip kullanabilir miyim?

Elbette, her ikisi de (sayfadaki ilk yaklaşım)

pip install ipython

ve (üçüncü yaklaşım, ikincisi conda)

IPython'u GitHub veya PyPI'den manuel olarak indirebilirsiniz. Bu sürümlerden birini kurmak için paketi açın ve Terminal'i kullanarak aşağıdakileri üst düzey kaynak dizinden çalıştırın:

pip install .

yükleme için resmi olarak önerilen yollardır .

Zaten pip'im olduğunda neden conda'yı başka bir python paket yöneticisi olarak kullanmalıyım?

As söyledi buraya :

Belirli bir pakete ihtiyacınız varsa, belki sadece bir proje için veya projeyi başka biriyle paylaşmanız gerekiyorsa, conda daha uygun görünüyor.

Conda ( YMMV ) boruyu geçiyor

  • python olmayan araçlar kullanan projeler
  • meslektaşları ile paylaşmak
  • sürümler arasında geçiş yapma
  • farklı kütüphane sürümlerine sahip projeler arasında geçiş yapma

Pip ve conda arasındaki fark nedir?

Bu, herkes tarafından kapsamlı bir şekilde cevaplanmaktadır.


1

pip sadece Python içindir

condasadece Anaconda + R bağımlılıkları vb. gibi diğer bilimsel paketler içindir. Herkesin zaten Python ile gelen Anaconda'ya ihtiyacı DEĞİLDİR. Anaconda çoğunlukla Makine öğrenme / derin öğrenme vb. Olanlar içindir. Casual Python dev Anaconda dizüstü bilgisayarında çalışmaz.


basit bir açıklama, ancak doğrudan Anaconda'nın web sitesine gitmeyi ve Python 2.x veya 3.x dağıtımını indirmeyi öğrendim. Neden? > çünkü bir öğrencinin ihtiyaç duyacağı tüm paketleri içerir. Numpy, Scipy, matpliotlib, sklearn vb. Bu yüzden daha ince temel ayrıntıları anlamada bir boşluk vardır. Öğrenci
Rene Duchamp

Bunun bu noktada eski bir cevap olduğunu biliyorum, ama Conda / Anaconda hakkında yazdıklarınız benim için tamamen yanlış görünüyor.
AMC

0

Küçük bir doğadan başka bir fark bulmuş olabilirim. Python ortamlarım /usryerine /homeya da başka bir şey altında var . Yüklemek için kullanmak zorundayım sudo install pip. Benim için istenmeyen yan etkisi, sudo install pipbaşka yerlerde yaygın olarak bildirilenlerden biraz farklıydı: Bunu yaptıktan sonra, pythonyüklü paketlerin sudoherhangi birini içe aktarmak için birlikte çalışmam gerekiyordu sudo. Bundan vazgeçtim ve sonunda kullanabileceğimi buldumsudo conda paketleri bir ortama yüklemek için/usr ardından normalde içeriye sudoizin almadan ithalpython . Hatta kullanılan sudo condabir kırık düzeltmek için pipkullanmak yerine sudo pip uninstall pipya sudo pip --upgrade install pip.


0

PIP ve Conda aynı şeyi gerçekleştirmek için farklı uygulamalardır. Her ikisi de paketleri kurmanın standart yoludur. Temel fark paket dosyalarının kaynağıdır. Pypi daha fazla "deneysel" pakete veya paketlerin daha yeni sürümlerine sahip olacak. Bir conda ortamında pip kullanmak zorunda kaldım birçok kez vardır. Sadece pypi'de var olan paketler var, bu yüzden conda onları bulamayacak. Genellikle ilk önce conda yüklemeyi denerim ve bu işe yaramazsa, pip install çoğu zaman çalışır.

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.