Wat is het verschil tussen pip en conda?

Ik weet dat pipeen pakketbeheerder is voor pythonpakketten. Ik zag echter dat de installatie op de website van IPython condagebruikte om IPython te installeren.

Kan ik pipgebruiken om IPython te installeren? Waarom zou ik condagebruiken als een andere python-pakketbeheerder als ik al pipheb?

Wat is het verschil tussen pipen conda?


Antwoord 1, autoriteit 100%

Citaat uit de Conda-blog:

We zijn al zo lang betrokken bij de pythonwereld en we kennen allemaal pip, easy_install en virtualenv, maar deze tools voldeden niet aan al onze specifieke vereisten. Het grootste probleem is dat ze gefocust zijn op Python, waarbij ze niet-Python-bibliotheekafhankelijkheden negeren, zoals HDF5, MKL, LLVM, enz., Die geen setup.py in hun broncode hebben en ook geen bestanden installeren op de Python-site -pakketten directory.

Conda is dus een verpakkingstool en installatieprogramma dat meer wil doen dan wat pipdoet; omgaan met bibliotheekafhankelijkheden buitenvan de Python-pakketten, evenals de Python-pakketten zelf. Conda creëert ook een virtuele omgeving, zoals virtualenvdat doet.

Als zodanig moet Conda worden vergeleken met Buildoutmisschien, een ander hulpmiddel waarmee u zowel Python als niet-Python installatietaken.

Omdat Conda een nieuwe verpakkingsindeling introduceert, kunt u pipen Conda uitwisselen niet gebruiken; pipkan het Conda-pakketformaat niet installeren. U kunt de twee gereedschappen naast elkaar gebruiken (door pipte installeren met conda install pip), maar ze zijn ook niet interoperaat.

Sinds het schrijven van dit antwoord heeft Anaconda een nieuwe pagina op inzicht Conda gepubliceerd en PIP , die dit ook echoën:

Hiermee benadrukt dit een belangrijk verschil tussen Conda en PIP. PIP installeert Python-pakketten, terwijl Conda pakketten installeert die software in elke taal kunnen bevatten. Voor het gebruik van PIP moet bijvoorbeeld een Python-tolk worden geïnstalleerd via een systeempakketbeheerder of door een installatieprogramma te downloaden en te gebruiken. Conda aan de andere kant kan Python-pakketten en de Python-tolk rechtstreeks installeren.

en verder op

Af en toe is een pakket nodig, wat niet beschikbaar is als Conda-pakket, maar is beschikbaar op PYPI en kan met PIP worden geïnstalleerd. In deze gevallen is het logisch om zowel Conda als PIP te gebruiken.


Antwoord 2, Autoriteit 45%

Hier is een korte vervallen:

PIP

  • Python-pakketten alleen.
  • Compileert alles van bron. EDIT: PIP Installeert nu binaire wielen, als ze beschikbaar zijn.
  • Gezegend door de Core Python-community (d.w.z. Python 3.4+ omvat code die automatisch bootstraps pip).

Conda

  • Python Agnostic. De belangrijkste focus van bestaande pakketten zijn voor Python, en inderdaad Conda zelf is geschreven in Python, maar je kunt ook Conda-pakketten hebben voor C-bibliotheken, of R-pakketten, of echt alles.
  • Installeert binaire bestanden. Er is een tool genaamd conda builddie pakketten bouwt vanaf de broncode, maar conda installinstalleert zelf dingen van reeds gebouwde Conda-pakketten.
  • Extern. Conda is de pakketbeheerder van Anaconda, de Python-distributie van Continuum Analytics, maar kan ook buiten Anaconda worden gebruikt. Je kunt het gebruiken met een bestaande Python-installatie door pip te installeren (hoewel dit niet wordt aanbevolen, tenzij je een goede reden hebt om een bestaande installatie te gebruiken).

In beide gevallen:

  • Geschreven in Python
  • Open source (Conda is BSD en pip is MIT)

De eerste twee opsommingstekens van Conda zijn echt wat het voor veel pakketten voordeliger maakt dan pip. Omdat pip vanaf de bron wordt geïnstalleerd, kan het lastig zijn om er dingen mee te installeren als je de broncode niet kunt compileren (dit geldt met name voor Windows, maar het kan zelfs waar zijn op Linux als de pakketten een moeilijke C- of FORTRAN-bibliotheek hebben afhankelijkheden). Conda installeert vanuit binair, wat betekent dat iemand (bijv. Continuum) al het harde werk heeft gedaan om het pakket te compileren, en dus is de installatie eenvoudig.

Er zijn ook enkele verschillen als u geïnteresseerd bent in het samenstellen van uw eigen pakketten. Pip is bijvoorbeeld gebouwd bovenop setuptools, terwijl Conda zijn eigen formaat gebruikt, wat enkele voordelen heeft (zoals statisch zijn, en nogmaals, Python-agnostisch).


Antwoord 3, autoriteit 17%

De andere antwoorden geven een redelijke beschrijving van de details, maar ik wil enkele belangrijke punten benadrukken.

pip is een pakketbeheerder die de installatie, upgrade en verwijdering van python-pakkettenvergemakkelijkt. Het werkt ook met virtuele python-omgevingen.

conda is een pakketbeheerder voor alle software(installatie, upgrade en verwijdering). Het werkt ook met virtuele systeemomgevingen.

Een van de doelen met het ontwerp van conda is om pakketbeheer te vergemakkelijken voor de volledige softwarestack die gebruikers nodig hebben, waarvan een of meer pythonversies slechts een klein onderdeel zijn. Dit omvat bibliotheken op laag niveau, zoals lineaire algebra, compilers, zoals mingw op Windows, editors, versiebeheertools zoals Hg en Git, of wat dan ook dat distributie en beheer vereist.

Voor versiebeheer kunt u met pip schakelen tussen en meerdere python-omgevingen beheren.

Conda stelt u in staat om te schakelen tussen en te beheren meerdere omgevingen voor algemene doeleindenwaarover meerdere andere dingen kunnen variëren in versienummer, zoals C-bibliotheken, of compilers, of testsuites, of database-engines en enzovoort.

Conda is niet op Windows gericht, maar op Windows is het verreweg de superieure oplossing die momenteel beschikbaar is wanneer complexe wetenschappelijke pakketten die moeten worden gecompileerd, moeten worden geïnstalleerd en beheerd.

Ik wil huilen als ik bedenk hoeveel tijd ik heb verloren bij het compileren van veel van deze pakketten via pip op Windows, of bij het debuggen van mislukte pip install-sessies terwijl compilatie vereist was.

>

Als laatste punt host Continuum Analytics ook (gratis) binstar.org(nu anaconda.org) om reguliere pakketontwikkelaars in staat te stellen hun eigen aangepaste (gebouwde!) softwarestacks te maken die hun pakketgebruikers kunnen conda installvan.


Antwoord 4, autoriteit 4%

Om je niet verder te verwarren,
maar je kunt pip ook gebruiken in je conda-omgeving, wat de algemene versus python-specifieke opmerkingen van managers hierboven valideert.

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

je kunt ook pip toevoegen aan standaardpakketten van elke omgeving, zodat het elke keer aanwezig is, zodat je het bovenstaande fragment niet hoeft te volgen.


Antwoord 5, autoriteit 4%

Citaat uit Conda for Data Scienceartikel op de website van Continuum:

Conda versus pip

Python-programmeurs zijn waarschijnlijk bekend met pip om pakketten van PyPI te downloaden en hun vereisten te beheren. Hoewel zowel conda als pip pakketbeheerders zijn, zijn ze heel verschillend:

  • Pip is specifiek voor Python-pakketten en conda is taalonafhankelijk, wat betekent dat we conda kunnen gebruiken om pakketten vanuit elke taal te beheren
    Pip compileert vanaf de broncode en conda installeert binaire bestanden, waardoor de last van compilatie wordt weggenomen
  • Conda maakt native taalonafhankelijke omgevingen, terwijl pip op virtualenv vertrouwt om alleen Python-omgevingen te beheren
    Hoewel het wordt aanbevolen om altijd conda-pakketten te gebruiken, bevat conda ook pip, zodat u niet tussen de twee hoeft te kiezen. Als u bijvoorbeeld een python-pakket wilt installeren dat geen conda-pakket heeft, maar beschikbaar is via pip, voert u bijvoorbeeld het volgende uit:
conda install pip
pip install gensim

Antwoord 6, autoriteit 3%

Citatteren van Conda: mythen en misvattingen (een uitgebreide beschrijving):

Myth # 3: Conda en PIP zijn directe concurrenten

Reality: Conda en PIP dienen verschillende doeleinden en concurreren alleen direct in een kleine subset van taken: namelijk het installeren van Python-pakketten in geïsoleerde omgevingen.

PIP, die staat voor p ip i nstalls p Ackages, is Python’s officieel gesanctioneerde pakketbeheerder, en wordt het meest gewend aan Installeer pakketten gepubliceerd op de Python-pakketindex (PYPI). Zowel PIP- als PYPI worden bestuurd en ondersteund door de Python-verpakkingsautoriteit (PYPA).

Kortom, PIP is een manager voor algemene doeleinden voor Python-pakketten; Conda is een taal-agnostische cross-platform milieubeheerder. Voor de gebruiker is het meest opvallende onderscheider dit waarschijnlijk: PIP installeert Python-pakketten in elke omgeving; Conda installeert elk pakket binnen Conda-omgevingen. Als alles wat u aan het doen bent, zijn de installatie van Python-pakketten binnen een geïsoleerde omgeving, Conda en PIP + VIRUALENV meestal uitwisselbaar, modulo wat een verschil in afhankelijkheidsverwerking en pakketbeschikbaarheid. Met de geïsoleerde omgeving bedoel ik een Conda-Env of Virtualenv, waarin je pakketten kunt installeren zonder je systeem Python-installatie aan te passen.

Zelfs als we mythe #2 buiten beschouwing laten, als we ons concentreren op alleen de installatie van Python-pakketten, dienen conda en pip verschillende doelgroepen en verschillende doelen. Als u bijvoorbeeld Python-pakketten wilt beheren binnen een bestaande Python-installatie van het systeem, kan conda u niet helpen: door het ontwerp kan het alleen pakketten binnen conda-omgevingen installeren. Als je bijvoorbeeld wilt werken met de vele Python-pakketten die afhankelijk zijn van externe afhankelijkheden (NumPy, SciPy en Matplotlib zijn veelvoorkomende voorbeelden), terwijl je die afhankelijkheden op een zinvolle manier volgt, kan pip je niet helpen: door het ontwerp is het beheert Python-pakketten en alleen Python-pakketten.

Conda en pip zijn geen concurrenten, maar tools die zijn gericht op verschillende groepen gebruikers en gebruikspatronen.


Antwoord 7, autoriteit 3%

pipis een pakketbeheerder.

condais zowel pakketbeheerder als omgevingsbeheerder.

Detail:

Referenties


Antwoord 8, autoriteit 2%

Voor WINDOWS-gebruikers

De situatie met de “standaard” verpakkingstools is recentelijk verbeterd:

  • op pypi zelf zijn er nu 48% van de wielpakketten vanaf sept. 11e 2015 (van 38% in mei 2015 , 24% in sept. 2014),

  • het wielformaat wordt nu out-of-the-box ondersteund volgens de nieuwste python 2.7.9,

De situatie van de “standaard”+”tweaks” verpakkingstools verbetert ook:

  • u kunt bijna alle wetenschappelijke pakketten op wielformaat vinden op http://www .lfd.uci.edu/~gohlke/pythonlibs,

  • het mingwpy-project kan op een dag een ‘compilatie’-pakket opleveren voor Windows-gebruikers, zodat ze alles vanaf de bron kunnen installeren wanneer dat nodig is.

‘Conda’-verpakkingen blijven beter voor de markt die ze bedient en benadrukken gebieden waar de ‘standaard’ moetverbeteren.

(ook de afhankelijkheidsspecificatie meervoudige inspanning, in standaard wielsysteem en in conda-systeem, of buildout, is niet erg pythonisch, het zou leuk zijn als al deze ‘kern’-technieken voor verpakkingen zouden kunnen convergeren, via een soort PEP )


Antwoord 9

Om de oorspronkelijke vraag te beantwoorden:
Voor het installeren van pakketten zijn PIP en Conda verschillende manieren om hetzelfde te bereiken. Beide zijn standaardtoepassingen om pakketten te installeren. Het belangrijkste verschil is de bron van de pakketbestanden.

  • PIP/PyPI zal meer “experimentele” pakketten hebben, of nieuwere, minder gebruikelijke versies van pakketten
  • Conda heeft doorgaans meer gevestigde pakketten of versies

Een belangrijke kanttekening: als u beide bronnen (pip en conda) gebruikt om pakketten in dezelfde omgeving te installeren, kan dit later problemen veroorzaken.

  • De omgeving opnieuw creëren zal moeilijker zijn
  • Incompatibiliteit van pakketten wordt ingewikkelder

Het beste is om één applicatie, PIP of Conda, te selecteren om pakketten te installeren en die applicatie te gebruiken om alle pakketten te installeren die je nodig hebt.
Er zijn echter veel uitzonderingen of redenen om pip nog steeds te gebruiken vanuit een conda-omgeving en vice versa.
Bijvoorbeeld:

  • Als er pakketten zijn die je nodig hebt die er maar op één bestaan, en de
    andere heeft ze niet.
  • Je hebt een bepaalde versie nodig die maar in één omgeving beschikbaar is

Antwoord 10

Kan ik pip gebruiken om iPython te installeren?

Natuurlijk, zowel (eerste benadering op pagina)

pip install ipython

en (derde aanpak, tweede is conda)

U kunt IPYTHON van GitHub of PYPI handmatig downloaden. Om er een te installeren
Van deze versies, pak het uit en voer het volgende uit vanaf het hoogste niveau
Bronlijst met behulp van de terminal:

pip install .

zijn officieel aanbevolen manieren om te installeren.

Waarom zou ik Conda gebruiken als een andere Python Package Manager wanneer ik al PIP heb?

Zoals gezegd hier :

Als u een specifiek pakket nodig hebt, mag alleen voor één project, of als u het project met iemand anders moet delen, lijkt Conda meer geschikt.

Conda overtreft PIP in (ymmv )

  • Projecten die niet-Python-tools gebruiken
  • delen met collega’s
  • schakelen tussen versies
  • Schakelen tussen projecten met verschillende bibliotheekversies

Wat is het verschil tussen PIP en CONDA?

die uitgebreid wordt beantwoord door alle anderen.


Antwoord 11

pipIS ALLEEN VOOR PYTHON

condais alleen voor Anaconda + andere wetenschappelijke pakketten zoals R-afhankelijkheden enz. NIET iedereen heeft Anaconda nodig die al met Python wordt geleverd. Anaconda is vooral bedoeld voor mensen die aan machine learning/deep learning enz. doen. Casual Python-ontwikkelaars kunnen Anaconda niet op zijn laptop gebruiken.


Antwoord 12

Misschien heb ik nog een ander verschil van ondergeschikte aard gevonden. Ik heb mijn python-omgevingen onder /usrin plaats van /homeof wat dan ook. Om het te installeren, zou ik sudo install pipmoeten gebruiken. Voor mij was de ongewenste bijwerking van sudo install pipiets anders dan wat elders algemeen wordt gemeld: nadat ik dit had gedaan, moest ik pythonuitvoeren met sudoom een van de sudo-geïnstalleerde pakketten te importeren. Ik gaf dat op en ontdekte uiteindelijk dat ik sudo condakon gebruiken om pakketten te installeren in een omgeving onder /usrdie vervolgens normaal werden geïmporteerd zonder dat sudonodig was toestemming voor python. Ik heb zelfs sudo condagebruikt om een kapotte pipte repareren in plaats van sudo pip uninstall pipof sudo pip --upgrade install pip.

Other episodes