In diesem Beitrag möchte ich eine Anleitung für den Start mit Python unter Windows liefern. Dazu beschreibe ich alles was nötig ist, um die Voraussetzungen für das erste eigene Python-Projekt zu schaffen.
Dabei ist es mir wichtig, neben einer konkreten Anleitung, auch das Verständnis wichtiger, zugrundeliegender Konzepte zu vermitteln. Daher gliedere ich meinen Artikel in zwei Teile: Teil 1 zeigt Grundlagen zum Start mit Python auf. Dabei beschreibe ich, was man ganz generell benötigt und erkläre auch, wieso wir das alles brauchen. In Teil 2 beschreibe ich anschließend anhand einer praktischen Schritt für Schritt Anleitung die konkrete Umsetzung. Dieser zweite Teil reicht dann vom Download und der Installation, über die Konfiguration bis hin zum allerersten eigenen Projekt.
Hier die Gliederung des ersten Teils:
In „Start mit Python – Teil 2“ (direkt dorthin) befasse ich mich dann mit folgenden Punkten:
- Installation der Anaconda Distribution unter Windows
- Test der Anaconda Installation
- Installation der PyCharm IDE
- Erzeugen einer virtuellen Python-Umgebung
- Erstes Projekt unter PyCharm
- Durchstarten mit „Hallo Welt!“
Beginnen wir mit diesem ersten, einführenden Teil. Hier konzentriere ich mich auf wichtige grundlegende Erläuterungen. Diese sind notwendig, um zu verstehen, warum einige der im zweiten Teil folgenden, konkreten Schritte überhaupt notwendig sind. Denn startet man als Anfänger ohne Vorerfahrung in die Programmierung, so kann es möglicherweise frustrierend sein, so viele Installationen und Konfigurationen vorzunehmen, bevor man seine erste Code-Zeile schreibt. Insofern kann es nicht schaden, wenn man versteht was dahinter steckt.
Warum Python?
Gründe für einen Python Einstieg gibt es viele. Ob als Teil der Ausbildung bzw. des Studiums, oder aus beruflichen Gründen. Manch einer nutzt Python auch im privaten Bereich, da es sehr flexibel und einfach zu handhaben ist. In meinem Fall hatte ich einfach Lust mir etwas Neues anzuschauen, also musste eine neue Programmiersprache her. Meine bisherigen Erfahrungen sammelte ich alle mit Sprachen wie Java oder C++. Doch mit Python hatte ich bislang nie zu tun. Über die Programmierung mit Python habe ich allerdings sehr häufig viel Positives gehört. So gilt diese Sprache beispielsweise als sehr leicht erlernbar und deren Programmcode als gut lesbar. Darüber hinaus gibt es noch viele weitere Vorteile, zum Beispiel die intuitive Nutzbarkeit, die praktikable Umsetzung von Deklarationen, etc.
Aus all diesen Gründen dachte ich mir, dass es nun an der Zeit ist Python näher zu betrachten! Diesen neuen Start in die Programmierung und meinen Beginn mit Python möchte ich hier mit euch teilen.
Was wir zum Start mit Python brauchen
Bei Python handelt es sich um eine Hochsprache, oder auch höhere Programmiersprache genannt. Eine solche Sprache eignet sich besonders gut dazu, von Menschen sowohl verfasst, als auch gelesen (und verstanden) zu werden. Wir können diese Sprache gut mit einem Texteditor verfassen, denn sie ist für die Anwendung durch Menschen gestaltet. Somit steht unser erstes Werkzeug fest, wir benötigen einen Editor.
Von einer Maschinensprache, die letztlich durch Nullen und Einsen dargestellt, und von einem Computer ausgeführt wird, ist Python jedoch noch sehr weit entfernt. Daher muss unser Quellcode, wie alle anderen Hochsprachen auch, zuerst in Maschinensprache übersetzt werden. Damit sind wir auch schon bei unserem zweiten Werkzeug angelangt. Wir benötigen einen Interpreter. Denn dieser erledigt für uns genau die benötigte Übersetzung unseres selbst verfassten Quellcodes in Maschinensprache.
Ich konzentriere mich in diesem Beitrag auf eben diesen Standardfall, nämlich dass Python interpretiert wird. Es gibt auch die Möglichkeit, Python mit einem Compiler zu übersetzen, ähnlich wie es beispielsweise bei Sprachen wie C, C++, .NET, etc., der Fall ist. Der Unterschied ist, vereinfachend gesagt der, dass ein Interpreter zur Laufzeit des Programms die Übersetzung durchführt, während ein Compiler dies bereits vor der Ausführung erledigt. Doch das soll ein anderes Thema sein, dem ich mich möglicherweise in einem gesonderten Beitrag widme.
Die integrierte Entwicklungsumgebung
Wir wissen nun also, dass wir mindestens zwei Werkzeuge für unseren Start mit Python benötigen: Einen Editor, um den Quellcode zu verfassen, und einen Interpreter, der für uns diesen Code dann schließlich in Maschinensprache übersetzt und zur Ausführung bringt.
Natürlich könnte man den Quellcode nun theoretisch mit dem standardmäßig vorhandenen Editor unter Windows oder Ähnlichem verfassen. Etwas mehr Komfort soll es dann aber doch sein. Ginge es bei diesem Komfort nur um Syntax-Highlighting, so kämen auch Tools wie Notepad++ in Frage. Doch ich habe mich dazu entschieden, eine vollwertige IDE (Integrated Development Environment, zu deutsch: Integrierte Entwicklungsumgebung) zu nutzen. Eine solche IDE beinhaltet immer den von uns benötigten Editor. Allerdings lässt sie uns darüber hinaus später in den Genuss von weiteren Komfortfunktionen wie Debugging, Versionierung, die integrierte Einbindung eines Repository, etc., kommen. Nach einer kurzen Recherche kamen für mich zwei verschiedene IDE in Frage: Visual Studio Code von der Firma Microsoft oder PyCharm des Unternehmens JetBrains. Natürlich gibt es da noch einige Andere, aber das soll ein anderes Thema sein… Entschieden habe ich mich letztlich für PyCharm, die ersten Schritte dazu folgen im zweiten Teil meines Artikels.
Die Python Distribution
Wie eingangs erwähnt, benötigen wir neben dem Editor bzw. der IDE auch noch einen Interpreter. Hier setze ich ebenso auf Komfort und nehme gleich eine vollständige Python-Distribution. Entschieden habe ich mich für die Distribution Anaconda in der ‚Individual Edition‘. Diese ist für den privaten Gebrauch kostenlos. Die Distribution bringt neben des reinen Interpreters noch weitere Vorteile mit sich. Diese sind zum Beispiel die eigene Paketverwaltung oder der schlanke Kommandozeileninterpreter iPython. (Darüber hinaus noch einiges mehr.)
Auch hier beschreibe ich den Download und die Installation in Teil 2 des Artikels. Doch bevor wir damit loslegen, und die konkreten Installationen und Konfigurationen durchführen, folgen erst ein paar Worte zu wichtigen Konzepten. Dies erleichtert uns das Verständnis bezüglich notwendiger Konfigurationen. Insbesondere das Konzept virtueller Entwicklungsumgebungen, welche auf Basis der verwendeten Distribution einzurichten sind, erschließt sich nicht zwingend auf den ersten Blick. Um dies besser zu verstehen, müssen wir im Folgenden noch ganz kurz auf grundlegende Begrifflichkeiten und Zusammenhänge eingehen.
Programmiersprache und Pakete
Eine Programmiersprache ist eine formale Sprache, die es uns erlaubt, Algorithmen und Datenstrukturen zu beschreiben. Das bedeutet, dass wir mit einzelnen, fest definierten Schritten, die Lösung von Problemen beschreiben. Wie bereits in Abschnitt 2 dargestellt, erfolgt diese Beschreibung in der Regel in einer Hochsprache, in unserem Fall Python.
Die Kunst des Programmierens besteht nun darin, das zu lösende Problem mit der gegebenen Syntax und Semantik der Programmiersprache zu beschreiben und zu lösen. Dabei zerlegt man das Gesamtproblem typischerweise in viele kleine Teilprobleme.
Ein Paket versteht sich in diesem Zusammenhang nun als Bündelung zusammenhängender Beschreibungen, die in einer Programmiersprache verfasst sind. Pakete können verwendet werden, um sinnvoll abgrenzbare Teilprobleme zu kapseln. Somit wird es möglich, dass man immer wiederkehrende Teilprobleme nicht auch immer wieder erneut beschreiben muss. Denn dann reicht es aus, bereits bestehende Pakete wiederzuverwenden.
Betrachten wir hierzu ein Beispiel. Vorhandene, bereits gelöste Teilprobleme sind etwa Pakete zur Erstellung einer grafischen Benutzeroberfläche (GUI) oder Pakete mit Implementierungen von Datenbankanbindungen. Angenommen wir haben einen Entwickler, dessen Aufgabe es ist, eine Buchhaltungssoftware zu programmieren. Dieser Entwickler kann sich nun ganz auf das implementieren der Buchungslogik konzentrieren. Bestimmte Teilprobleme dabei, nämlich das Anzeigen der Buchungen oder das Speichern in einer Datenbank, muss er nicht mehr selbst lösen. Dafür kann er vorhandene Pakete wiederverwenden, die ihm von anderen Entwicklern bereit gestellt werden.
Im konkreten Falle einer solchen Wiederverwendung durch eine Anwendung, spricht man auch von einer Abhängigkeit der Anwendung zu diesem Paket. Darüber hinaus können auch Pakete untereinander Abhängigkeiten haben.
Was daraus jedoch für Probleme entstehen können, und wie wir sie lösen können, betrachten wir im folgenden Abschnitt.
Virtuelle Umgebungen
Wir wissen jetzt, dass uns die Wiederverwendung von Paketen die Programmierung erleichtern können. Doch neben den beschriebenen Vorteilen bringt dies auch Nachteile mit sich. Denn in der Praxis ist es so, dass sich sowohl Pakete, als auch die Programmiersprache selbst, dynamisch weiterentwickeln bzw. verändern. Daher kommt es häufig dazu, dass unterschiedliche Anwendungen teilweise unterschiedliche Versionen von Python selbst oder einzelner Pakete benötigen. Dies führt schnell zu einem Geflecht von Abhängigkeiten. Dieses kann schnell sehr komplexe Ausmaße annehmen, und sich darüber hinaus noch von Anwendung zu Anwendung unterscheiden. Diese anwendungsspezifischen Abhängigkeiten können dann im Widerspruch oder Konflikt zueinander stehen.
Um genau diese Konflikte und Widersprüche zu vermeiden, verwenden wir virtuelle Umgebungen. Denn diese kapseln, übergeordnet für jede Anwendung separat, die jeweilige Version der Programmiersprache, der Pakete und die Pakete selbst. Das macht das Wechseln zwischen der Entwicklung unterschiedlicher Anwendungen sehr einfach und flexibel. Zudem schließt es die vorgenannten Konflikte und Widersprüche prinzipiell aus.
Greifen wir unser obiges Beispiel des Entwicklers einer Buchhaltungssoftware nochmal auf. Nehmen wir an, dieser Entwickler hat noch ein zweites Projekt, welches ebenso eine Datenbankanbindung und eine grafische Benutzeroberfläche benötigt. Hier kann er also ebenfalls die bekannten Pakete wiederverwenden. Aus bestimmten Gründen benötigt dieses zweite Projekt aber andere Versionen dieser Pakete, welche nicht mit denen aus dem Projekt der Buchhaltungssoftware kompatibel sind. Hätte der Entwickler nun keine Möglichkeit der Trennung beider Projekte, so entstünde schnell ein Konflikt aufgrund von Inkompatibilitäten der unterschiedlichen Paketversionen. Doch zum Glück liegen beide Projekte in unterschiedlichen, virtuellen Umgebungen. So bekommt jedes Projekt genau die Version des Paketes die es benötigt.
Wie geht es weiter?
Wir wissen nun was wir grundsätzlich an Werkzeugen für einen Start mit Python mindestens benötigen, nämlich
- eine IDE mit Editor zum Bearbeiten unseres Quellcodes, und
- eine Python-Distribution mit Interpreter.
Zudem wissen wir jetzt, Begriffe wie Programmiersprache und Pakete, besser einzuordnen, und warum uns virtuelle Umgebungen das Leben leichter machen.
Daher können wir uns nun endlich an die konkrete Umsetzung und den praktischen Anteil begeben. Im zweiten Teil des Beitrages zeige ich die notwendigen Schritte für das Einrichten solcher virtuellen Umgebungen, das Installieren der Distribution und der IDE, sowie das Aufsetzen des ersten Projektes. Am Ende werden wir eine voll einsatzfähige Entwicklungsumgebung haben, und unser erstes „Hallo Welt“-Projekt erfolgreich gestartet haben. Somit sollte der Start mit Python unter Windows problemlos gelingen. Danke für die Aufmerksamkeit und viel Spaß beim Weiterlesen!
Hier geht es direkt weiter zu Teil 2:
Anleitung zum Start mit Python unter Windows – Teil 2