web-dev-qa-db-de.com

Was ist der Unterschied zwischen Pip und Conda?

Ich weiß, dass pip ein Paketmanager für Python-Pakete ist. Ich habe jedoch gesehen, dass die Installation auf der IPython-Website conda zur Installation von IPython verwendet.

Kann ich pip verwenden, um IPython zu installieren? Warum sollte ich conda als einen anderen Python-Paketmanager verwenden, wenn ich bereits pip habe?

Was ist der Unterschied zwischen pip und conda?

525
lazywei

Zitieren aus dem Conda-Blog :

Nachdem wir schon so lange in der Python-Welt tätig waren, kennen wir alle pip, easy_install und virtualenv. Diese Tools erfüllten jedoch nicht alle unsere spezifischen Anforderungen. Das Hauptproblem besteht darin, dass sie sich auf Python konzentrieren und Nicht-Python-Bibliotheksabhängigkeiten wie HDF5, MKL, LLVM usw. vernachlässigen, die im Quellcode kein setup.py enthalten und auch keine Dateien in Pythons Site installieren -packages Verzeichnis.

Conda ist also ein Paketierungswerkzeug und -installateur, der mehr als das tun soll, was pip tut. behandeln Bibliotheksabhängigkeiten outside der Python-Pakete sowie die Python-Pakete selbst. Conda erstellt auch eine virtuelle Umgebung wie virtualenv.

Als solches sollte Conda mit Buildout verglichen werden, einem anderen Tool, mit dem Sie sowohl Python- als auch Nicht-Python-Installationsaufgaben ausführen können.

Da Conda ein neues Verpackungsformat einführt, können Sie pip und Conda nicht austauschbar verwenden. pip kann das Conda-Paketformat nicht installieren. Sie können die beiden Tools nebeneinander verwenden (indem Sie pip mit conda install pip installieren), sie funktionieren jedoch auch nicht miteinander.

373
Martijn Pieters

Hier ist ein kurzer Überblick:

pip

  • Nur Python-Pakete.
  • Kompiliert alles von der Quelle. EDIT: pip installiert jetzt binäre Räder, falls verfügbar.
  • Von der Python-Kerngemeinde gesegnet (d. H., Python 3.4+ enthält Code, der automatisch den Pip-Wert erhöht).

conda

  • Python-Agnostiker. Der Schwerpunkt bestehender Pakete liegt auf Python. Tatsächlich ist Conda selbst in Python geschrieben. Sie können jedoch auch Conda-Pakete für C-Bibliotheken oder R-Pakete oder wirklich alles verwenden.
  • Installiert Binärdateien. Es gibt ein Tool mit dem Namen conda build, das Pakete aus der Quelle erstellt, aber conda install selbst installiert Dinge aus bereits erstellten Conda-Paketen. 
  • Externe. Conda ist der Paketmanager von Anaconda, der Python-Distribution von Continuum Analytics. Es kann jedoch auch außerhalb von Anaconda verwendet werden. Sie können es mit einer vorhandenen Python-Installation durch Pip-Installation verwenden (dies wird jedoch nicht empfohlen, es sei denn, Sie haben einen guten Grund, eine vorhandene Installation zu verwenden).

In beiden Fällen:

  • In Python geschrieben
  • Open Source (Conda ist BSD und Pip ist MIT)

Die ersten beiden Aufzählungspunkte von Conda sind es, was es für viele Pakete vorteilhaft macht. Da pip vom Quellcode aus installiert wird, kann es schwierig sein, Dinge zu installieren, wenn der Quellcode nicht kompiliert werden kann (dies gilt insbesondere für Windows, aber es kann sogar unter Linux der Fall sein, wenn die Pakete eine schwierige C- oder FORTRAN-Bibliothek haben Abhängigkeiten). Conda wird von binär installiert, was bedeutet, dass jemand (z. B. Continuum) die harte Arbeit beim Kompilieren des Pakets bereits geleistet hat und die Installation daher einfach ist. 

Es gibt auch einige Unterschiede, wenn Sie daran interessiert sind, Ihre eigenen Pakete zu erstellen. Zum Beispiel wird pip auf Setuptools aufgebaut, während conda ein eigenes Format verwendet, das einige Vorteile hat (z. B. statisch und wieder Python-Agnostik). 

212
asmeurer

Die anderen Antworten geben eine faire Beschreibung der Details, aber ich möchte einige übergeordnete Punkte hervorheben.

pip ist ein Paketmanager, der die Installation, das Upgrade und die Deinstallation von python-Paketen erleichtert. Es funktioniert auch mit virtuellen python - Umgebungen.

conda ist ein Paketmanager für any Software (Installation, Upgrade und Deinstallation). Es funktioniert auch mit virtuellen system -Umgebungen.

Eines der Ziele beim Design von conda ist die Vereinfachung der Paketverwaltung für den gesamten von den Benutzern benötigten Software-Stack, von denen eine oder mehrere Python-Versionen möglicherweise nur einen kleinen Teil darstellen. Dazu gehören Low-Level-Bibliotheken wie lineare Algebra, Compiler wie mingw unter Windows, Editoren, Versionskontrolle-Tools wie Hg und Git oder was sonst noch verteilt und verwaltet werden muss.

Bei der Versionsverwaltung können Sie mit pip zwischen mehreren python - Umgebungen wechseln und diese verwalten.

Mit Conda können Sie zwischen mehreren Universalumgebungen wechseln und diese verwalten, in denen sich mehrere andere Dinge in der Versionsnummer unterscheiden können, z. B. C-Bibliotheken oder Compiler, Test-Suites oder Datenbank-Engines usw.

Conda ist nicht auf Windows ausgerichtet, aber unter Windows ist es die derzeit überlegene Lösung, wenn komplexe wissenschaftliche Pakete installiert und verwaltet werden müssen, die zusammengestellt werden müssen. 

Ich möchte weinen, wenn ich daran denke, wie viel Zeit ich beim Versuch verloren habe, viele dieser Pakete über Pip unter Windows zu kompilieren oder fehlerhafte pip install-Sitzungen zu debuggen, wenn eine Kompilierung erforderlich war.

Als abschließender Punkt hostet Continuum Analytics auch (kostenlos) binstar.org (jetzt unter anaconda.org ), damit reguläre Paketentwickler ihre eigenen benutzerdefinierten (Built!) - Softwarestapel erstellen können, die ihre Paket- Benutzer können conda install aus.

81
Caleb Hattingh

Um Sie nicht weiter zu verwirren, können Sie Sie können jedoch auch pip innerhalb Ihrer Conda-Umgebung verwenden, wodurch die oben stehenden allgemeinen Managerkommentare von Python bestätigt werden. 

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

sie können den Standardpaketen einer beliebigen Umgebung auch pip hinzufügen, damit sie jedes Mal vorhanden ist, so dass Sie den obigen Ausschnitt nicht befolgen müssen. 

22
vijay venkatesh

Zitat aus Conda for Data Science Artikel auf der Kontinuum-Website:

Conda vs pip

Python-Programmierer sind wahrscheinlich mit pip vertraut, um Pakete von PyPI herunterzuladen und ihre Anforderungen zu verwalten. Obwohl Conda und Pip Paketmanager sind, sind sie sehr unterschiedlich:

  • Pip ist spezifisch für Python-Pakete, und conda ist sprachunabhängig, was bedeutet, dass wir Conda verwenden können, um Pakete aus einer beliebigen Sprache zu verwalten Pip kompiliert aus Quell- und Kondaninstallationsdateien und entlastet die Kompilierung
  • Conda erstellt nativ sprachunabhängige Umgebungen, während pip sich bei der Verwaltung nur von Python-Umgebungen auf virtualenv stützt Obwohl es empfohlen wird, immer Conda-Pakete zu verwenden, enthält Conda auch Pip, sodass Sie nicht zwischen den beiden wählen müssen. Um beispielsweise ein Python-Paket zu installieren, das kein Conda-Paket enthält, aber über pip verfügbar ist, führen Sie einfach Folgendes aus:
conda install pip
pip install gensim
18
CheTesta

Für WINDOWS-Benutzer

Die Situation der "Standard" -Verpackungswerkzeuge verbessert sich in letzter Zeit:

  • auf pypi selbst gibt es jetzt 48% der Radpakete. 11. 2015 (gegenüber 38% im Mai 2015, 24% im September 2014),

  • das Radformat wird jetzt standardmäßig mit dem neuesten Python 2.7.9 unterstützt.

Die "Standard" + "Tweaks" -Verpackungswerkzeuge verbessern sich ebenfalls:

  • sie können fast alle wissenschaftlichen Pakete im Radformat unter http://www.lfd.uci.edu/~gohlke/pythonlibs finden.

  • das mingwpy-Projekt kann Windows-Benutzern eines Tages ein Kompilierungspaket bieten, das es erlaubt, bei Bedarf alles von der Quelle zu installieren.

"Conda" -Verpackungen bleiben für den von ihnen bedienten Markt besser und zeigen Bereiche auf, in denen der "Standard" sollte verbessert wird.

(Außerdem ist die Abhängigkeitsspezifikation mehrfacher Aufwand in einem Standard-Radsystem und in einem Conda-System oder Buildout nicht sehr pythonisch, es wäre schön, wenn all diese Kerntechniken der Verpackung über eine Art PEP zusammenlaufen könnten.

11
stonebig

Zitat aus Conda: Mythen und Missverständnisse (eine umfassende Beschreibung):

...

Mythos # 3: Conda und Pip sind direkte Konkurrenten

Realität: Conda und Pip dienen unterschiedlichen Zwecken und können nur in einer kleinen Teilmenge von Aufgaben direkt konkurrieren: Python-Pakete in isolierten Umgebungen installieren.

Pip, der für P ip I nstalls P ackages steht, ist der offiziell genehmigte Paketmanager von Python und wird am häufigsten für die Installation von auf Python veröffentlichten Paketen verwendet Paketindex (PyPI). Sowohl pip als auch PyPI werden von der Python Packaging Authority (PyPA) geregelt und unterstützt.

Kurz gesagt, pip ist ein Allzweck-Manager für Python-Pakete. conda ist ein sprachenunabhängiger, plattformübergreifender Umgebungsmanager. Für den Benutzer ist der wichtigste Unterschied wahrscheinlich der folgende: pip installiert Python-Pakete in jeder Umgebung; conda installiert alle Pakete in Conda-Umgebungen. Wenn Sie nur Python-Pakete in einer isolierten Umgebung installieren, sind Conda und Pip + Virtualenv meistens austauschbar. Modulo unterscheidet sich in Abhängigkeit von der Abhängigkeit und der Verfügbarkeit von Paketen. Mit isolierter Umgebung meine ich eine Conda-Env oder Virtualenv, in der Sie Pakete installieren können, ohne die Python-Installation Ihres Systems zu ändern.

Selbst wenn wir Mythos Nr. 2 beiseite legen, dienen Conda und Pip nur der Installation von Python-Paketen und dienen unterschiedlichen Zielgruppen und unterschiedlichen Zwecken. Wenn Sie beispielsweise Python-Pakete in einer vorhandenen System-Python-Installation verwalten möchten, kann conda Ihnen nicht helfen: Sie kann Pakete nur in Conda-Umgebungen installieren. Wenn Sie beispielsweise mit den vielen Python-Paketen arbeiten möchten, die auf externen Abhängigkeiten angewiesen sind (NumPy, SciPy und Matplotlib sind häufige Beispiele), während Sie diese Abhängigkeiten auf sinnvolle Weise nachverfolgen, kann pip Ihnen nicht helfen: Design verwaltet Python-Pakete und nur Python-Pakete.

Conda und Pip sind keine Konkurrenten, sondern Werkzeuge, die sich auf unterschiedliche Benutzergruppen und Nutzungsmuster konzentrieren.

10
sancho.s

pip ist nur für Python

conda ist nur für Anaconda + andere wissenschaftliche Pakete wie R-Abhängigkeiten usw. NICHT jeder braucht Anaconda, die bereits mit Python geliefert wird. Anaconda ist vor allem für diejenigen gedacht, die Maschinelles Lernen/Deep Learning usw. betreiben. Der zufällige Python-Entwickler lässt Anaconda nicht auf seinem Laptop laufen.

3
Galapagos

Kann ich pip zum Installieren von iPython verwenden? 

Sicher, beide (erster Ansatz auf der Seite)

pip install ipython

und (dritter Ansatz, zweiter ist conda)

Sie können IPython manuell von GitHub oder PyPI herunterladen. So installieren Sie einen Entpacken Sie diese Versionen und führen Sie die folgenden Schritte von der obersten Ebene aus Quellverzeichnis mit dem Terminal:

pip install .

sind offiziell empfohlene Wege zur Installation von .

Warum sollte ich Conda als einen anderen Python-Paketmanager verwenden, wenn ich bereits Pip habe?

Wie gesagt hier :

Wenn Sie ein bestimmtes Paket benötigen, möglicherweise nur für ein Projekt, oder wenn Sie das Projekt mit einer anderen Person teilen möchten, ist Conda geeigneter.

Conda übertrifft pip in ( YMMV )

  • projekte, die Nicht-Python-Werkzeuge verwenden
  • mit Kollegen teilen
  • zwischen den Versionen wechseln
  • wechseln zwischen Projekten mit unterschiedlichen Bibliotheksversionen

Was ist der Unterschied zwischen Pip und Conda?

Das wird von allen anderen ausführlich beantwortet.

0
serv-inc

Ich habe vielleicht noch einen weiteren geringfügigen Unterschied gefunden. Ich habe meine Python-Umgebungen unter /usr und nicht /home oder was auch immer. Um es zu installieren, müsste ich Sudo install pip verwenden. Für mich war der unerwünschte Nebeneffekt von Sudo install pip etwas anders als anderswo berichtet: Danach musste ich python mit Sudo ausführen, um die installierten Sudo-Pakete zu importieren. Ich gab das auf und fand schließlich heraus, dass ich Sudo conda verwenden konnte, um Pakete in einer Umgebung unter /usr zu installieren, die dann normal importiert wurde, ohne dass Sudo für python erforderlich war. Ich habe sogar Sudo conda verwendet, um eine defekte pip zu beheben, anstatt Sudo pip uninstall pip oder Sudo pip --upgrade install pip zu verwenden. 

0
J B