Hej Leute,

ihr wollt als Data Scientist durchstarten, habt euch vorgenommen, Python zu lernen und wollt nun wissen, wie ihr anfangt. Zuerst braucht ihr mal eine Python-Distribution, also eine Software, welche Python und gegebenenfalls noch mehr enhält. Statt einfach nur auf python.org zu gehen und sich die aktuellste Version für Euer Betriebssystem, also zum Beispiel Python 3.7.1 für Windows, herunterzuladen, empfehle ich Euch die Python-Distribution Anaconda. Diese enthält nämlich noch einiges Nützliches mehr.

In meine Anleitung zur Installation von Python findet ihr einen kurzen Abriss über verschieden Python IDEs und Anaconda, aber alles ziemlich knapp. Hier geht es aber weiter mit den Tiefen von Anaconda. Natürlich bleiben wir trotzdem an der Oberfläche, schließlich wollt Ihr kein ganzes Buch über Anaconda lesen.

Was ist Anaconda?

Anaconda ist eine Python-Distribution für Windows, Linux und MacOS, welche aus IPython, Spyder, Jupyter Notebook und nicht zu vergessen conda besteht.

  • IPython: eine Python-Kommandozeile
  • Spyder: ein Editor für Python-Skripte mit vielen Tools, welche ich hier erkläre
  • Jupyter Notebook: ein browserbasierter Editor für spezielle Skripte (die sogenannten Notebooks), welche neben dem Code auch formatierten Text und Grafiken enthalten
  • Conda: ein Package-Management-System, d.h. mit conda lassen sich Abhängigkeiten zwischen Package-Versionen gut verwalten und die Packages updaten

Wenn ihr also noch kein Python installiert habt, dann ist Anaconda auf jeden Fall das richtige für Euch. Einfach zu installieren und upzudaten. Auf der Website von Anaconda gibt es einfach einen Installer, also auf den Download-Bereich gehen, herunterladen, installieren, Fertig.

IPython

IPython steht für Interactive Python und ist eine interaktive Python-Shell, welche eng mit Jupyter Notebook verbunden ist. In früheren Versionen war es eine Einheit, die man dann aber getrennt hat. Deshalb ist es etwas schwierig, im Netz Informationen nur zu IPython zu bekommen. Grundsätzlich braucht ihr euch um IPython gar nicht so sehr zu kümmern, denn unsere Python-Skripte schreiben wir mit Spyder oder in Jupyter Notebook, welche beide mit IPython kommunizieren. IPython ist sozusagen die zugrundelegende Python shell, welche einfach mehr Funktionalität bietet als das Standard Python-Prompt, insbesondere ermöglicht es die grafische Ausgabe. In der offiziellen Dokumentation findet ihr eine Liste mit Features.

Anacondas IDE Spyder

Spyder ist eine Python IDE und wird bei Anaconda mitgeliefert, also quasi die offizielle Anaconda IDE, wenn aktuell auch nicht mehr von Anaconda bezahlt. Aber erstmal ganz langsam: Was ist nun eine IDE und wofür brauche ich diese? IDE steht für integrated development environment, also eine integrierte Entwicklungsumgebung. Diese ist eine Sammlung von Tools, welche uns die Software-Entwicklung erleichtern. Meistens sind die IDEs auf eine bestimmte  Programmiersprache zugeschnitten. Unter Windows ist die bekannteste Visual Studios,  für Mac ist es XCode, aber es gibt haufenweise IDEs, jede mit ihren Vor- und Nachteilen. Eclipse, ursprünglich für Java entwickelt und bei Java-Programmierern beliebt, unterstützt auch C++, PHP und es gibt Plugins, mit denen unter anderem Python oder R angebunden werden.

Spyder besteht aus mehreren Fenstern, die natürlich alle angepasst werden können. So sind neben dem Skript noch ein Variablen-Explorer und die Ipython-Konsole zu sehen. Wenn man ein Skript entwickelt, schickt man die Befehle per Shortcut an die Konsole. Zudem gibt es gute Debugging und Profiling-Möglichkeiten. Zusätzlich erlaubt ein Plugin für Spyder auch das Erstellen und Bearbeiten von Jupyter Notebooks. Alles in allem also ein super Tool, um sofort mit Python loszulegen.

Jupyter Notebook

Jupyter Notebook ist eine Weboberfläche (also per Webbrowser wie Chrome zu bedienen), welche neben dem Programmcode in mehrere Programmiersprachen (in unserem Fall Python oder R) auch formatierten Text und Grafiken. Notebooks sind ein sehr guter Einstieg in die Python-Programmierung und es gibt viele Tutorials im Notebook-Format, unter anderem bei Kaggle oder in diesem Guthub-Repository findet ihr eine Reihe von interessanten Jupyter Notebooks.

Conda

Conda ist ein Package-Management System, welches die verschiedenen Versionen von Python und den Libraries verwaltet und dafür sorgt, dass alles stabil läuft. Super nützlich, insbesondere wenn Projekte nicht mehr reines Hobby sind (und auch dann ist es hilfreich). Zuerst allerdings nicht ganz einfach zu verstehen, aber im nächsten Kapitel erkläre ich die Grundlagen von conda.

Anaconda richtig benutzen

Was sind Conda Environments?

In Anaconda besteht die Möglichkeit, mehrere Umgebungen zu definieren. Diese Umgebungen können unterschiedliche Versionen von Python und Packages installiert haben. Das macht Sinn, wenn man sauber verschiedene Projekte trennen will, also zum Beispiel eine Umgebung für Tensor-Flow und eine andere für PyTorch. Oder ihr wollt testen, ob alles auf dem Produktiv-Server funktionieren wird, auf dem ihr nicht mal eben ein Update machen könnt.

Um ein Environment zu erzeugen, gebt ihr im Anaconda Prompt folgendes ein

conda create --name EnvName

Wollt ihr eine andere Python-Version benutzen, geht das folgendermaßen

conda create -n EnvName python=3.4

Und wenn ihr nun noch bestimmte Package-Version benutzen wollt, könnt ihr diese einfach aufzählen

conda create -n myenv python=3.4 scipy=0.15.0 astroid babel

Man kann auch eine Datei schreiben, in der das alles definiert ist. Aber dazu ein anderes Mal mehr.

Um nun das neue Environment zu nutzen, müsst ihr es aktivieren. Unter Windows macht ihr das mit activate EnvName, unter Linux und MacOS mit source activate EnvName. Damit sollte sich die Kommandozeile geändert haben.

Das Deaktivieren geht einfach über deactivate bzw. source deactivate

Wollt ihr Spyder oder Jupyter Notebook in einem Environment nutzen, müsst ihr es zuerst dort installeren. Das geht über conda install -n myenv spyder. Danach dann einfach das Environment aktivieren und dann spyder oder eben jupyter notebook eintippen.

Der Anaconda Navigator

Wenn ihr Anaconda installiert, wird auch der Navigator mitgeliefert. Dieser ist quasi die bequeme Version vom Anaconda Prompt, d.h. ihr könnt per Mausklick ein neues Environment erzeugen und Packages updaten.

Anaconda updaten

Um immer die neuste Versionen von Python, IPython, Spyder und all den Packages zu haben, gibt es zwei Befehle, die ihr kennen solltet bzw. einfach diese Seite bookmarken und dann immer wieder hier rauskopieren. Zum Updaten öffnet ihr die Anaconda-Prompt und gebt dann zweimal die folgenden Befehle ein. Der erste Befehl  updated das conda-Programm

conda update conda

Im Anschluss updated ihr das Anaconda-System

conda update anaconda

Nach einer kurzen Warterei wird eine Liste mit allen anstehenden Veränderungen (Upgrades und Downgrades) angezeigt, die ihr noch bestätigen müsst. Ja, es gibt je nach installierten Versionen der Packages auch Downgrades. Conda versucht, eine möglichst stabile Umgebung zu erzeugen. Wenn also ein Packages auf einer älteren Version eines anderen Packages aufbaut, wird conda den Konflikt auflösen.

Wie gesagt, am besten zwei Mal hintereinander ausführen, damit auch alle Abhängigkeiten sauber aufgelöst werden. Danach solltet ihr eine Anaconda-Version haben, wie als hättet ihr sie frisch heruntergeladen und installiert.

Das solltet ihr unbedingt im Root-Environment machen

Warum ihr nicht conda update --all aufrufen solltet, oder doch?

Wenn ihr ein bisschen im Netz sucht, werdet ihr auch auf den Befehl

conda update --all

stoßen. Der macht ein bisschen was anderes. Damit installiert ihr zu jedem Package die neueste Version (unter der Veraussetzung, dass alle Abhängigkeiten erfüllt sind). Das bringt jedes Package auf den neusten Stand, denn ein Anaconda-Release kann auch mal einige Monate alt sein. Früher führte das nicht unbedingt zu einer stabilen Umgebung. Anaconda hat in ihren Distributionen extra die Package-Versionen so ausgewählt, dass alles gut zusammenspielt.

Ihr müsst euch also entscheiden, ob ihr eine möglichst stabile oder eine möglichst aktuelle Umgebung haben wollt.

Pip-Packages und manuelle Installation

Noch ein Wort der Warnung zu mit pip oder manuell per python setup.py install installierten Packages. Diese werden von conda nicht berücksichtigt, denn woher soll conda wissen, was ihr da installiert habt. Hier müsst ihr euch selber um das Update kümmern. Prinzipiell sollte man also immer per conda installieren, sofern es diese Option gibt.