1117 Stimmen

Was ist der Unterschied zwischen pip und conda?

Ich weiß, dass pip ein Paketmanager für Python-Pakete ist. Allerdings habe ich gesehen, dass die Installation auf der Website von IPython conda verwendet, um IPython zu installieren.

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

Was ist der Unterschied zwischen pip und conda?

34voto

CheTesta Punkte 570

Zitat aus dem Conda for Data Science Artikel auf Continuums Website:

Conda gegen pip

Python-Programmierer sind wahrscheinlich mit pip vertraut, um Pakete von PyPI herunterzuladen und ihre Anforderungen zu verwalten. Obwohl sowohl conda als auch pip Paketverwalter sind, sind sie sehr unterschiedlich:

  • Pip ist spezifisch für Python-Pakete und conda ist sprachenunabhängig, was bedeutet, dass wir conda verwenden können, um Pakete aus jeder Sprache zu verwalten. Pip kompiliert aus Quellen und conda installiert Binärdateien, was die Belastung der Kompilierung entfernt.
  • Conda erstellt sprachunabhängige Umgebungen nativ, während pip auf virtualenv angewiesen ist, um nur Python-Umgebungen zu verwalten. Obwohl es empfohlen wird, immer conda-Pakete zu verwenden, enthält conda auch pip, sodass Sie nicht zwischen den beiden wählen müssen. Zum Beispiel, um ein Python-Paket zu installieren, das kein conda-Paket hat, aber über pip verfügbar ist, führen Sie einfach, zum Beispiel, aus:
conda install pip
pip install gensim

27voto

Simba Punkte 17612

pip ist ein Paketmanager.

conda ist sowohl ein Paketmanager als auch ein Umgebungsmanager.

Detail:

Geben Sie hier eine Bildbeschreibung ein

Abhängigkeitsprüfung

Pip und conda unterscheiden sich auch darin, wie Abhängigkeitsbeziehungen innerhalb einer Umgebung erfüllt werden. Beim Installieren von Paketen installiert pip Abhängigkeiten in einer rekursiven, seriellen Schleife. Es wird kein Versuch unternommen, sicherzustellen, dass die Abhängigkeiten aller Pakete gleichzeitig erfüllt werden. Dies kann zu Umgebungen führen, die auf subtile Weise fehlerhaft sind, wenn Pakete, die früher in der Reihenfolge installiert wurden, inkompatible Abhängigkeitsversionen im Vergleich zu Paketen haben, die später in der Reihenfolge installiert wurden. Im Gegensatz dazu verwendet conda einen Satisfiability (SAT)-Löser, um zu überprüfen, ob alle Anforderungen aller in einer Umgebung installierten Pakete erfüllt sind. Diese Überprüfung kann zusätzliche Zeit in Anspruch nehmen, hilft jedoch dabei, die Erstellung fehlerhafter Umgebungen zu verhindern. Solange die Paketmetadaten zu Abhängigkeiten korrekt sind, wird conda vorhersagbar funktionierende Umgebungen erstellen.

Verweise

23voto

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

...

Mythos #3: Conda und pip sind direkte Konkurrenten

Realität: Conda und pip haben unterschiedliche Zwecke und konkurrieren nur direkt in einem kleinen Teilbereich: nämlich bei der Installation von Python-Paketen in isolierten Umgebungen.

Pip ist die Abkürzung für Pip Installs Packages, der offizielle Paketmanager von Python und wird am häufigsten verwendet, um Pakete zu installieren, die im Python Package Index (PyPI) veröffentlicht sind. Sowohl pip als auch PyPI werden von der Python Packaging Authority (PyPA) verwaltet und unterstützt.

Kurz gesagt, pip ist ein allgemeiner Manager für Python-Pakete; conda ist ein sprachenunabhängiger plattformübergreifender Umgebungsmanager. Für den Benutzer ist der markanteste Unterschied wahrscheinlich folgender: pip installiert Python-Pakete in jeder Umgebung, conda installiert jedes Paket in conda-Umgebungen. Wenn Sie nur Python-Pakete in einer isolierten Umgebung installieren, sind conda und pip+virtualenv größtenteils austauschbar, abgesehen von einigen Unterschieden in der Abhängigkeitsverwaltung und Paketverfügbarkeit. Mit isolierter Umgebung meine ich eine conda-env oder virtualenv, in der Sie Pakete installieren können, ohne Ihre System-Python-Installation zu verändern.

Selbst wenn wir Mythos #2 beiseite lassen, konzentrieren sich conda und pip bei der Installation von Python-Paketen auf unterschiedliche Zielgruppen und Zwecke. Wenn Sie beispielsweise Python-Pakete innerhalb einer vorhandenen System-Python-Installation verwalten möchten, kann Ihnen conda nicht helfen: Es kann nur Pakete innerhalb von conda-Umgebungen installieren. Wenn Sie beispielsweise mit den vielen Python-Paketen arbeiten möchten, die auf externe Abhängigkeiten angewiesen sind (NumPy, SciPy und Matplotlib sind gängige Beispiele), und diese Abhängigkeiten auf sinnvolle Weise verfolgen möchten, kann Ihnen pip nicht helfen: Es verwaltet ausschließlich Python-Pakete.

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

13voto

stonebig Punkte 1193

Für WINDOWS-Benutzer

Die Situation mit den "standard" Verpackungswerkzeugen hat sich in letzter Zeit verbessert:

  • auf pypi selbst gibt es jetzt 48% der Räderpakete ab dem 11. September 2015 (von 38% im Mai 2015, 24% im September 2014),

  • das Radformat wird jetzt standardmäßig von den neuesten Python 2.7.9 unterstützt,

Die Situation mit den "standard" + "tweaks" Verpackungswerkzeugen verbessert sich ebenfalls:

  • Sie finden jetzt fast alle wissenschaftlichen Pakete im Wheel-Format unter http://www.lfd.uci.edu/~gohlke/pythonlibs,

  • das mingwpy-Projekt könnte eines Tages ein "Kompilierungs"-Paket für Windows-Benutzer bringen, das es ermöglicht, alles bei Bedarf aus den Quellen zu installieren.

Die "Conda"-Verpackung bleibt besser für den Markt, den sie bedient, und zeigt Bereiche auf, in denen sich der "Standard" verbessern sollte.

(außerdem ist die Abhängigkeitsspezifikation in mehreren Anstrengungen, im Standard-Wheel-System und im Conda-System oder in Buildout, nicht sehr pythonisch. Es wäre schön, wenn all diese Verpackungskern-Techniken über eine Art von PEP konvergieren könnten)

6voto

Donald S Punkte 1613

Um die ursprüngliche Frage zu beantworten,
Beim Installieren von Paketen sind PIP und Conda unterschiedliche Möglichkeiten, um dasselbe zu erreichen. Beide sind Standardanwendungen zum Installieren von Paketen. Der Hauptunterschied liegt in der Quelle der Paketdateien.

  • PIP/PyPI wird mehr "experimentelle" Pakete oder neuere, weniger verbreitete Versionen von Paketen haben
  • Conda wird in der Regel etabliertere Pakete oder Versionen haben

Ein wichtiger warnender Nebenaspekt: Wenn Sie beide Quellen (pip und conda) verwenden, um Pakete in derselben Umgebung zu installieren, kann dies später zu Problemen führen.

  • Das Erstellen der Umgebung wird schwieriger sein
  • Das Beheben von Paketinkompatibilitäten wird komplizierter

Die bewährte Praxis besteht darin, eine Anwendung, PIP oder Conda, auszuwählen, um Pakete zu installieren, und diese Anwendung zu verwenden, um alle benötigten Pakete zu installieren. Es gibt jedoch viele Ausnahmen oder Gründe, warum Sie trotzdem pip innerhalb einer conda-Umgebung verwenden sollten und umgekehrt. Zum Beispiel:

  • Wenn es Pakete gibt, die Sie benötigen, die nur auf einer der beiden existieren und die andere sie nicht hat.
  • Sie benötigen eine bestimmte Version, die nur in einer Umgebung verfügbar ist

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X