Bei Python muss das Rad nicht jedes Mal neu erfunden werden: Zahlreiche vorprogrammierte Funktionen stehen zur Verfügung, die als praktisches Paket heruntergeladen, installiert und für die eigenen Projekte verwendet werden können.
Mit einem Paketmanager gestaltet sich die Verwaltung solcher Pakete gleich viel einfacher. Zu den am meisten verwendeten Paketmanagern zählen pip und conda.
Doch was genau ist eigentlich ein Paketmanager? Welche Vor- und Nachteile haben pip und conda? Und was sind überhaupt die Unterschiede? In diesem Blogbeitrag schauen wir uns die beiden Tools mal etwas näher an.
Das sind die Unterschiede zwischen pip und conda
Bei pip handelt es sich um den offiziellen Paketmanager der Python Software Foundation. Er bezieht seine Pakete aus dem offiziellen Software Repository PyPI.
Dagegen handelt es sich bei conda um einen sprachunabhängigen und plattformübergreifenden Paketmanager, der unter anderem Python Pakete verwaltet.
Mit der Standard Installation von Python erhältst du auch pip direkt mit installiert.
Bei Anaconda wird conda standardmäßig mit ausgeliefert.
Bei pip stehen im Vergleich zu conda deutlich mehr Pakete zur Verfügung. Dafür ermöglicht conda auch ohne zusätzliche Tools unterschiedliche Umgebungen mit verschiedenen Paketen zu verwalten. Außerdem können die Pakete unkomplizierter installiert werden, da im Gegensatz zu pip bestehende Abhängigkeiten direkt berücksichtigt werden.
Die Pakete werden für conda erst angepasst, weshalb über pip aktuellere Paketversionen bezogen werden können.
Was ist ein Paketmanager?
Python unterstützt wie andere Programmiersprachen Frameworks und Bibliotheken von Drittanbietern, die verschiedene Funktionen sowie Elemente bereits enthalten und von dir für deine Programmierung genutzt werden können. Mit solchen Vorprogrammierungen sparst du zum einen Zeit, zum anderen musst du das Rad nicht bei jedem Projekt neu erfinden.
Der Python Package Index (PyPI) ist eine Art zentraler Paketpool und stellt mittlerweile über 250.000 verschiedene Pakete mit hilfreichen Vorprogrammierungen zur Verfügung. Das manuelle Herunterladen, Installieren sowie Verwalten der Pakete kann jedoch sehr zeitaufwändig und frustrierend sein.
Paketmanager übernehmen diese Aufgabe und kümmern sich somit um das Installieren, Aktualisieren und Entfernen von Paketen – eine überaus praktische Automatisierung. Ein einzelnes Paket besteht üblicherweise aus Programmdateien, Daten-Files, Konfigurationsdateien und Metadaten. Die Metadaten beschreiben in erster Linie das Paket selbst und was enthalten ist.
Hier kann ein kleiner Vergleich mit einem bekannten, schwedischen Möbelhaus gezogen werden: Du möchtest ein Zimmer mit ganz bestimmten Möbeln ausstatten, um den Raum nach deinen Vorstellungen zu nutzen. Nachdem du dich für die Einrichtungsgegenstände entschieden hast, rennst du normalerweise durch die typische Lagerhalle des Möbelhauses, suchst dir die einzelnen Gegenstände und Pakete zusammen, hievst diese auf den Transportwagen und gehst schließlich zur Kasse. Das kann schon mal etwas länger dauern und ist nicht unbedingt komfortabel. Wäre es nicht praktisch, wenn jemand für dich das Zusammensuchen übernehmen könnte? Noch besser: Wäre es nicht ideal, wenn du dich ohne Möbelhausbesuch direkt in ein fertig eingerichtetes Zimmer setzen könntest?
So in der Art funktioniert ein Paketmanager: Du kannst mit ihm eine praktische Sammlung von vorprogrammierten Funktionen und Software (= Zusammenstellung von Möbeln) herunterladen und schließlich installieren (= komplette und automatische Einrichtung des Zimmers). Schon befindet sich in der Programmierumgebung alles, was du für dein Projekt benötigst – mehr Komfort ist kaum möglich.
Was ist pip?
Bei pip handelt es sich um ein Paketverwaltungsprogramm für Python-Pakete, dass sinngemäß für “PIP installiert Pakete” oder “Bevorzugtes Installationsprogramm” steht. Mit dem Befehlszeilenprogramm kannst du PyPI-Pakete mit unkomplizierten und einfachen Befehlen installieren und deinstallieren.
Der Paketmanager ist
- bei Python 2 ab Version 2.7.9 und
- bei Python 3 ab Version 3.4
im Python-Installer enthalten und damit ein Standard-Tool. Selbstverständlich kann pip aber auch nachinstalliert werden.
Welche Funktionen hat pip?
Die pip-Befehle sind denkbar einfach aufgebaut und daher unkompliziert zu verwenden.
Du möchtest die neuste Version von pip benutzen und eventuelle Sicherheitslücken schließen? Kein Problem, die Update-Funktion kann mit einem kleinen Befehl aufgerufen werden. Unter Windows lautet dieser:
python -m pip install -U pip
Die Python Pakete findest du über die Seite pypi.org (Python Package Index). Da die meisten Pakete/Projekte mit einem Git Repository arbeiten, stehen dort meistens auch die erforderlichen Installationsbefehle.
Um ein Paket zu installieren, reicht bereits folgende Eingabe aus:
pip install <Paketname>
Du möchtest das Paket aktualisieren? Auch dieser Befehl ist denkbar einfach:
pip install <Paketname> --upgrade
Wenn du mehr zu dem installierten Paket erfahren möchtest, ist der folgende Befehl die Lösung:
pip show <Paketname>
Mit dem folgenden Befehl kannst du das Paket wieder deinstallieren:
pip uninstall <Paketname>
Folgende Eingabe zeigt dir die installierten Python-Module an:
pip list
Was ist conda?
Bei conda handelt es sich um einen plattformübergreifenden Paketmanager. Er wird standardmäßig mit der Python-Distribution Anaconda geliefert. Conda ist in der Programmiersprache Python geschrieben, kann aber Projekte mit unterschiedlichen Programmiersprachen verwalten – somit auch mehrsprachige Projekte.
Das sprachunabhängige conda wird häufig für Data Science- und Machine Learning-Anwendungen verwendet und nutzt einen eigenen Index, um kompatible Pakete zu hosten.
Da es sich bei Conda-Paketen um Binärdateien handelt, wird für die Installation kein Compiler benötigt.
Mit Conda kannst du nicht nur Paketabhängigkeiten verwalten, sondern auch kompatible Python-Distributionen installieren und virtuelle Umgebungen für deine Anwendungen verwalten.
Welche Funktionen hat conda?
Auch bei conda können die Funktionen mit einfachen Befehlen genutzt werden. Hierzu zählen:
Aufgabe | Conda-Paket- und Umgebungsmanagerbefehl |
Paketmanager aktualisieren | conda update conda |
Paket installieren | conda install <Paketname> |
Paket aktualisieren | conda update <Paketname> |
Paket deinstallieren | conda remove <Paketname> |
Installierte Pakete auflisten | conda list |
Für die nachfolgenden Befehle gibt es bei pip kein passendes Gegenstück:
Aufgabe | Conda-Paket- und Umgebungsmanagerbefehl |
Umgebung erstellen | conda create –name <Umgebungsname> |
Umgebung aktivieren | conda activate <Umgebungsname> |
Umgebung deinstallieren | conda deactivate <Umgebungsname> |
Python installieren | conda install python=x.x |
Was sind die Unterschiede?
Grundsätzlich sind pip und conda nicht als direkte Konkurrenten zu betrachten, da sie unterschiedlichen Zwecken dienen, sich an unterschiedliche Zielgruppen richten und nur bei kleinen Aufgabenteilmengen direkt konkurrieren. Beide Paketmanager kümmern sich darum, dass Bibliotheken in den richtigen Versionen installiert werden.
Einer der größten Unterschiede ist, dass pip ausschließlich Python-Pakete installiert, während conda auch Python-unabhängige Pakete verwalten kann. Somit enthalten die Pakete auch Funktionen und Software, die mit einer anderen Sprache entwickelt wurden.
Vor der Verwendung von pip muss zunächst Standard Python installiert werden. conda hingegen setzt keine Python-Installation voraus, sondern kann sogar für den Download und die Installation des Python-Interpreters genutzt werden.
Ein weiterer wichtiger Unterschied zwischen den beiden Tools besteht darin, dass mit conda ohne Zusatzsoftware isolierte Umgebungen erstellt werden können. Diese Umgebungen können verschiedene Versionen von Python und installierten Paketen enthalten. Pip hat keine integrierte Unterstützung für solche Umgebungen, sondern benötigt hierfür separate Tools.
Wenn du mit conda eine virtuelle Umgebung erzeugst, kannst du eine bestimmte Python Version angeben. Sofern diese Version auf deinem PC noch nicht installiert ist, kümmert sich conda selbständig um den Download und die Installation. Diese Funktionalität wird von pip nicht angeboten.
Während die Python-Standardinstallation inklusive pip grundsätzlich kostenfrei ist, sind bei Anaconda, einschließlich conda, auch kommerzielle Editionen verfügbar. Die kostenlose Individual Edition von Anaconda ist für einen Gebrauch im Privatbereich, in der Ausbildung sowie in der Forschung vorgesehen.
Teilweise setzt die Installation von Paketen andere Tools voraus, die zuvor installiert und konfiguriert werden müssen. Pip bietet hierfür keine Automatisierungen an. Anaconda stellt angepasste, eigene Versionen der Pakete zur Verfügung, die alle Abhängigkeiten bereits enthalten. Genau diese abgewandelten Pakete werden schließlich von conda installiert.
Die Anpassung der Pakete hat allerdings auch eine Kehrseite: Sie benötigt Zeit, weshalb die conda-Pakete teilweise 1 bis 2 Versionen hinter der pip-Version liegen. Zudem sind teilweise mehr Bibliotheken enthalten als zwingend erforderlich.
Im Vergleich zu pip verwendet conda einen Satisfiability-Solver (SAT), somit einen Abhängigkeitsprüfer, der überprüft, ob alle Anforderungen der in einer Umgebung installierten Pakete erfüllt werden.
Im Regelfall funktionieren die mit conda installierten Pakete unter Windows störungsfreier.
Die Unterschiede lassen sich wie folgt zusammenfassen:
Conda | pip | |
verwaltet: | Binärdateien | Wheels oder Quellcode |
Paketquellen | Anaconda- Repository und -Cloud | PyPI |
Paketinstallation und -verwaltung | ✅ | ✅ |
Python installieren | ✅ | ❌ |
Python-Version wechseln | ✅ | ❌ |
Native Unterstützung von isolierten Umgebungen | ✅ | ❌ |
Verwaltung von Nicht-Python-Inhalten | ✅ | ❌ |
Installiert erforderliche Abhängigkeiten | ✅ | ❌ |
Immer die aktuellste Paketversion verfügbar | ❌ | ✅ |
Pakete enthalten nur benötigte Bibliotheken | ❌ | ✅ |
Wann sollte ich pip und wann conda benutzen?
pip bietet mit Abstand den größten Paketpool und ermöglicht damit für nahezu jede Aufgabenstellung ein passendes Paket zu finden. Aus diesem Grunde stellt dieser Paketmanager im Regelfall auch die erste Anlaufstelle dar.
conda richtet sich vorrangig an Entwickler, die in den Bereichen Data Science, maschinelles Lernen und KI Anwendungen programmieren möchten. Durch die Verwendung von Python-fremden Bestandteilen werden teilweise erweiterte Features zur Verfügung gestellt. Der flexible Wechsel zwischen verschiedenen Projekten mit unterschiedlichen Bibliotheksversionen wird allerdings nicht unbedingt von jedem Nutzer benötigt.
Wenn du Python-Pakete in einer vorhandenen Python-Systeminstallation verwalten möchten, kann dir conda kaum helfen: Von Natur aus kann es nur Pakete in conda-Umgebungen verwalten.
Wenn du hauptsächlich mit Python-Paketen arbeiten möchtest, die auf externen und anderssprachigen Abhängigkeiten basieren, ist pip nicht die ideale Lösung – denn pip verwaltet ausschließlich Python-Pakete.
Welchen Python-Paketmanager solltest du nun verwenden? Es kommt wirklich auf deinen Workflow und deine Vorlieben an.
Die meisten Python-Entwickler kommen mit dem standardmäßig enthaltenen pip aus und sehen daher von einer Nutzung von conda ab. Andere Programmierer verwenden sowohl pip als auch conda für die Installation und Verwaltung von Paketen.
Kurse
Code Challenges und YouTube Videos führen nicht immer zum gewünschten Erfolg.
Manchmal ist es besser, gezielt und strukturiert durch ein Thema zu arbeiten.
Schau dich einfach mal bei meinen Kursen um.
Ohne lästiges Blah Blah steigen wir direkt in das Thema ein und behandeln alles, was du brauchst.
Ingo Janssen ist ein Softwareentwickler mit über 10 Jahren Erfahrung in der Leitung seines eigenen Unternehmens.
Er studierte Wirtschaftsinformatik an der TH Deggendorf und hat Softwareentwicklung an der FOM Hochschule in München unterrichtet.
Ingo hat mit einer Vielzahl von Unternehmen zusammengearbeitet, von kleinen und mittelständischen Unternehmen bis hin zu MDAX- und DAX-gelisteten Unternehmen.
Ingo ist leidenschaftlich daran interessiert, sein Wissen und seine Expertise mit anderen zu teilen. Aus diesem Grund betreibt er einen YouTube-Kanal mit Programmier-Tutorials und eine Discord-Community, in der Entwickler miteinander in Kontakt treten und voneinander lernen können.
Sie können Ingo auch auf LinkedIn, Xing und Gulp finden, wo er Updates über seine Arbeit teilt und Einblicke in die Tech-Branche gibt.
YouTube | Discord | LinkedIn | Xing | Gulp Profile