Python ist zweifelsohne ein essenzieller Bestandteil der modernen Datenwissenschaft. Die Programmiersprache gibt Data Scientists und Softwareentwicklern eine ganze Reihe praktischer und performanter Tools an die Hand.
Die Tools erfordern in vielen Fällen aber auch ein gewisses Maß an Assembler-Knowhow. Zudem ist die Art und Weise, wie Python verpackt und bereitgestellt wird, nicht spezifisch auf Datenwissenschaftler zugeschnitten. Um diese Lücke zu füllen und Assembler dennoch außenvorzulassen, existieren verschiedene Projekte. Zum Beispiel Anaconda.
Was ist Anaconda Python?
Anaconda ist eine Python-Distribution - also quasi eine Neupaketierung von Python - die sich speziell an Entwickler richtet, die die Programmiersprache für Data-Science-Zwecke verwenden möchten. Dazu bietet Anaconda eine ganze Reihe datenwissenschaftlich ausgerichteter Tools und Features, die speziell die Datenverarbeitung mit Python vereinfachen.
Anaconda-Editionen im Überblick
Anaconda besteht aus zwei Hauptkomponenten - der Anaconda-Distribution und den dazugehörigen Services. Die Anaconda-Distribution lässt sich auch ohne die Dienste downloaden und nutzen - und steht in zwei unterschiedlichen Editionen zur Verfügung, nämlich:
der regulären Version und
einer abgespeckten Variante namens Miniconda.
Letztere ist eine gute Wahl für Einsteiger, denn sie ist auf die grundlegenden Funktionen beschränkt. Auf die Einzelheiten zu Miniconda kommen wir im Verlauf des Artikels noch einmal zu sprechen. Die Anaconda-Distribution ist in beiden Fällen kostenlos nutzbar.
Die Anaconda Services stehen mit unterschiedlichen Preisplänen für Einzelnutzer sowie Unternehmen (ab 75 Dollar pro Monat) zur Verfügung. Für erstgenannte ist auch eine kostenlose Version verfügbar. Zu den verfügbaren Enterprise-Features zählen beispielsweise:
Repository-Kontrollmaßnahmen,
Versionskontrolle,
Job Scheduling und
SLAs für die Uptime.
Anaconda-Python-Komponenten
Die Referenzversion von Python - Cpython - enthält einige hilfreiche Komponenten, etwa die Standardbibliothek und eine IDE. Data-Science-Tools gibt es dabei aber lediglich als Add-on. Nicht so bei Anaconda - hier ist eine hochwertige Auswahl entsprechender Tools standardmäßig mit an Bord. Anaconda enthält:
Python Interpreter,
Anaconda Navigator und
Conda Package Manager.
Python Interpreter
Hierbei handelt es sich nicht um den Standard-CPython-Build der Python Software Foundation, sondern um eine eigenständige Variante von Anaconda Inc., die speziell für die Python-Distribution erstellt wurde. Er soll im Vergleich (auf einigen Plattformen) sicherere Compiler Flags und bessere Performance-Optimierungen aufweisen.
Anaconda Navigator
Die auffälligste Neuerung, um die Anaconda die Arbeit mit Python ergänzt, ist eine grafische Benutzeroberfläche (GUI) - der Anaconda Navigator. Der ist keine IDE und versucht auch nicht, eine zu sein: Die meisten Python-fähigen IDEs sind in der Lage, die Anaconda Python Runtime zu registrieren und zu verwenden. Der Anaconda Navigator stellt vielmehr ein Organisationssystem für die größeren Parts der Distribution dar. Mit dem Navigator können Sie:
High-Level-Anwendungen wie RStudio oder Jupyterlab hinzufügen und nutzen;
virtuelle Umgebungen und Packages managen;
"Projects" einrichten (dazu später mehr), um die Arbeit in Anaconda zu verwalten;
auf diverse administrative Funktionen zugreifen.
Obwohl der Navigator den Komfort einer grafischen Benutzeroberfläche bietet, ersetzt er nicht die Befehlszeilenfunktionalitäten in Anaconda oder Python im Allgemeinen. Sie können Packages beispielsweise über die grafische Benutzeroberfläche verwalten, das aber auch über die Kommandozeile erledigen.
CPython hingegen weist keine formale GUI auf. Die Distribution wird zwar mit IDLE geliefert - einer Mini-IDE, die sich für schnelle, einmalige Aufgaben eignet. Geht es darum, Python selbst zu managen, sind Sie allerdings auf Drittanbieter angewiesen. Deswegen bieten einige IDEs GUI-Schnittstellen für CPython-Komponenten. Microsoft Visual Studio hat zum Beispiel eine grafische Benutzeroberfläche für das Pip-Paketverwaltungssystem von Python an Bord, die der GUI ähnelt, die Anaconda für seinen eigenen Paketmanager bereitstellt.
Conda Package Manager
Um Drittanbieter-Bibliotheken zu managen und zu installieren, wird Python mit dem pip
Package Manager ausgeliefert. Dieser ist allerdings - trotz jahrelanger Weiterentwicklungen - eher limitiert, denn er verwaltet nur Packages für Python selbst. Weist eine Bibliothek eine Abhängigkeit zu einem externen Package auf, muss dieses manuell vom Entwickler separat installiert und gemanagt werden.
Weil damit auch die Entwickler von Anaconda zu kämpfen hatten, beschlossen sie, ihre eigene Lösung zu entwickeln: Conda. Dieser Package Manager verwaltet nicht nur Packages, sondern auch Abhängigkeiten außerhalb des Python-Ökosystems.
Haben Sie es zum Beispiel mit mehreren Packages zu tun, die auf einen Compiler wie GCC oder LLVM angewiesen sind, stellt das für Conda kein Problem dar: Die Lösung ist in der Lage, eine einzige Instanz einer bestimmten GCC-Version für alle Conda-Pakete, die es benötigen, zu installieren. Mit pip
müssten Sie hingegen eine Kopie von GCC mit jedem Paket, das es verwendet, bündeln. Im Klartext: eine ineffiziente und umständliche Lösung.
Conda und pip
verwenden davon abgesehen auch nicht das gleiche Paketformat, weswegen Pakete, die für pip
erstellt wurden, für Conda neu erstellt werden müssen. Die gute Nachricht: Nahezu jede für das Python-Ökosystem wichtige Bibliothek ist über Conda verfügbar.
Anacondas Data-Science-Optimierungen
Die Verbesserungen, die Anaconda einführt, kommen ganz allgemein jedem Python-Nutzer zugute. Die wichtigsten Benefits hält die Distribution aber für Data-Science-Anwender bereit - die des Öfteren mit ihren Python-Umgebungen in Konflikt geraten.
Conda Environments
Python Packages kommen - selbst wenn sie mit Conda verwaltet werden - nicht immer gut miteinander "klar". Bestimmte Projekte benötigen manchmal unterschiedliche Package-Versionen. Um das Problem zu lösen, wurde zwar das Python-Feature für virtuelle Umgebungen - auch bekannt als venv
- entwickelt, aber Conda geht noch einen Schritt weiter.
Conda Environments sind funktional ähnlich aufgebaut wie virtuelle Umgebungen im venv-Stil. Wenn Sie bestimmte Versionen von Bibliotheken oder auch des Python-Interpreters verwenden wollen, können Sie die in einer Conda-Umgebung unterbringen - und isoliert nutzen. venv
-Umgebungen können zwar verschoben werden, enthalten aber nicht unbedingt detaillierte Informationen darüber, wie sie erstellt wurden. Wenn Sie für Ihre Arbeit eine reproduzierbare Umgebung benötigen, kann das ein Problem darstellen. Conda Environments sind hingegen auf Reproduzierbarkeit konzipiert.
Wollen Sie Kollegen ermöglichen, Ihre Conda-Umgebung zu benutzen, stellen Sie ihnen eine Kopie des entsprechenden Definitions-Files zur Verfügung. Diese beschreibt, wie man die Umgebung auf einem anderen System neu erstellt. Das funktioniert nicht uneingeschränkt plattformübergreifend: Alle Unterschiede hinsichtlich der Funktionsweise von Paketen auf verschiedenen Plattformen (etwa macOS versus Linux) müssen manuell ausgebügelt werden.
Anaconda Project
Ein Environment exakt zu reproduzieren, ist allgemein ein gängiges Problem - sowohl für Datenwissenschaftler als auch für Softwareentwickler. Selbst Conda-Umgebungen bieten nur eine Teillösung für dieses Problem, weil venv-Umgebungen Dinge wie Umgebungsvariablen nicht reproduzieren können.
An dieser Stelle kommt Anaconda Project ins Spiel: Das Tool verwandelt ganze Ordner mit Web-Apps, Skripten, Jupyter Notebooks und Files in eine reproduzierbare Ressource um. Sobald dieses Verzeichnis über Anaconda Project gemanagt wird, läuft es überall konsistent - insofern eine Kopie von Anaconda vorhanden ist.
Die größte Einschränkung: Anaconda Project befindet sich derzeit in der Betaphase und läuft noch nicht stabil. Solange das nicht der Fall ist, sollte es nicht für die gemeinsame Arbeit in Umgebungen verwendet werden. Bis es soweit ist, können Conda Environments zumindest eine verlässliche Teilmenge der gleichen Funktionalität bieten.
Apps in Anaconda Python
Anaconda Python macht Datenwissenschaftlern auch das Leben leichter, indem es verschiedene gängige Projekte für die interaktive Arbeit mit Daten bündelt. Zwei der gängigsten sind Jupyter Notebook und JupyterLab, die Live-Umgebungen bereitstellen, um Python Code zu schreiben, Daten zu importieren und Ergebnisse zu visualisieren. Anaconda richtet die entsprechenden Instanzen für Sie ein und managt diese - die Arbeit wird so auf einen Mausklick reduziert.
Weitere, enthaltene Anwendungen sind:
Qtconsole - eine grafische Benutzeroberfläche für Jupyter, die die Qt Interface Library verwendet. Sie ist nützlich, wenn Sie mit Jupyter Notebooks lieber über eine plattformeigene Oberfläche als über einen Webbrowser arbeiten wollen.
Spyder - eine in Python geschriebene Mini-IDE, die sich hauptsächlich an Entwickler richtet, die mit IPython/Jupyter Notebooks arbeiten. Es kann auch als Bibliothek für Python-Anwendungen verwendet werden, die eine IDE-ähnliche Schnittstelle benötigen.
RStudio - ein Toolset, um mit der Programmiersprache R zu arbeiten, die in diversen Bereichen für Datenanalysezwecke verwendet wird. RStudio bietet Möglichkeiten, sowohl mit Python als auch mit R zu arbeiten.
Visual Studio Code - Microsofts Editor ist dank seiner enormen Auswahl an Erweiterungen extrem wandelbar. Für die Arbeit mit Python stellt es eine der besten Entwicklungsumgebungen dar. Da kommt es gelegen, dass Anaconda-Nutzer direkt in Visual Studio Code einsteigen können, ohne es separat installieren zu müssen.
Wann Miniconda die bessere Option ist
Wenn Sie sich lieber schrittweise mit Anaconda Python vertraut machen wollen, empfiehlt sich der Einstieg mit der abgespeckten Version Miniconda. Die installiert nur das absolute Minimum, um mit Anaconda loszulegen: Interpreter, Package Manager und ein paar andere grundlegende Dinge. Sie können zwar weitere Komponenten hinzufügen oder mit Conda über die Kommandozeile Umgebungen erstellen.
Allerdings sollten Sie drei wesentliche Dinge im Hinterkopf behalten, wenn Sie mit Miniconda arbeiten wollen:
Die Anaconda Navigator GUI ist nicht standardmäßig installiert. Wenn Sie diese benötigen, können Sie diese mit dem Befehl
conda install anaconda-navigator
hinzufügen.Miniconda wird standardmäßig in ein Verzeichnis namens
Miniconda3
und nichtAnaconda
installiert. Ein Umstand der potenziell Verwirrung stiften kann. Das Installationsverzeichnis kann jedoch nach Bedarf angepasst werden.Conda kann nur verwendet werden, um Pakete aus Condas eigenem Repository in Miniconda zu installieren. Sie können
pip
verwenden, um PyPI-Bibliotheken in Miniconda zu installieren. Diese können jedoch nicht mit Conda gemanagt werden, sondern nur mit pip. Zudem sind weitere Schritte nötig, damitpip
und Conda koexistieren können. Wenn Sie wollen, dass Conda alles managt, besteht die Möglichkeit, PyPI- in Conda-Packages "umzupacken".
(fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.