Die richtige Python-IDE finden
Um Software mit Python zu entwickeln, bräuchten Sie im Grunde nur einen Text-Editor und eine Laufzeitumgebung - zumindest in der Theorie. In der Praxis ist eine IDE mit Python-Support aber ziemlich hilfreich, wenn das Ergebnis über das eines trivialen Skripts hinausgehen soll.
Wenn Sie bereits Software mit einer IDE entwickeln, können Sie die wahrscheinlich auch für das Programmieren mit Python einsetzen, denn die meisten beliebten IDEs unterstützen die Programmiersprache:
Beide Microsoft-IDEs - Visual Studio und Visual Studio Code - bieten über Extensions exzellenten Python-Support. Wer seinen Workflow bereits auf diese IDEs ausgerichtet hat, muss lediglich noch die entsprechenden Addons installieren.
Eclipse kommt vor allem in Verbindung mit Java zum Einsatz, unterstützt über Addons aber auch Python. Alternativ könnten Sie auch LiClipse nutzen. Dabei handelt es sich um eine um zahlreiche, vorinstallierte Python-Addons angereicherte Edition der Eclipse IDE.
Viele MacOS-User schwören auf den Sublime Text-Editor wegen seiner Geschwindigkeit und einfachen Nutzerführung. Entwicklern bietet Sublime Text einen Python-Interpreter und viele Plugins, die in Python geschrieben wurden.
Vim und Emacs bieten ebenfalls starken Python-Support - der noch weiter ausgebaut werden kann. Im Fall von Vim mit dem Python-Mode Plugin, bei Emacs über Addons.
Daneben gibt es auch einige dedizierte IDEs für Python, die eine Reihe von Use Cases abdecken:
IDLE kommt im Bundle mit CPython und eignet sich, um schnell Skripte zusammen zu "schmeißen" und Anfänger bei Problemen zu unterstützen.
PyCharm wird oft empfohlen - und das aus gutem Grund: Die IDE bietet Support für viele native Python-Tools (zum Beispiel Jupyter Notebooks). Dabei bleibt PyCharm trotzdem zugänglich und einfach zu bedienen.
Komodo ist die IDE von ActiveState und eignet sich daher vor allem für das Zusammenspiel mit ActivePython. Ein Einsatz mit CPython ist jedoch auch problemlos möglich.
Spyder richtet sich hauptsächlich an Wissenschaftler und Statistik-Experten und weniger an die allgemeine Python-Entwickler-Community.
- Produkt- & Projektmanager
Ganz generell schätzen es Entwickler nicht so besonders, wenn ihnen jemand erklären will, wie sie ihren Job zu machen haben. Weil Produkt- und Projektmanager aber oft Entwickler-Teams leiten, passiert genau das. Das kann zu Unstimmigkeiten führen. <br /><br /> Dazu hat auch David Fox von devRant eine Meinung: "Letztendlich ist es in den meisten Fällen so, dass Produkt- und Projektmanager in irgendeiner Art und Weise die 'Besitzer' von Projekten und Prozessen sind, ohne dabei die täglichen Herausforderungen und Probleme der Softwareentwickler zu kennen." - Chefs
Genau wie die Produkt- und Projektmanager sind auch Development oder Engineering Manager dafür zuständig, Teams von Entwicklern zu führen und sicherzustellen, dass Projekte rechtzeitig und unter Budget fertiggestellt werden. <br /><br /> "In einigen Unternehmen können Situationen entstehen, in denen der Chef gleichzeitig Mitglied des Entwicklerteams ist. Insbesondere wenn der Chef vorher selbst Entwickler war und nach einer Beförderung zum Chef wird, ist Konfliktpotenzial gegeben", merkt Fox an. - Recruiter
Softwareentwickler müssen gar nicht selbst aktiv nach einem Job suchen, um von Recruitern und Headhuntern belästigt zu werden - dem Fachkräftemangel sei Dank. Es dürfte sehr schwer sein, einen Developer zu finden, der noch nicht in die Fänge der Recruiter geraten ist. <br /><br /> David Fox sieht insbesondere die Hartnäckigkeit der Recruiter als Problem: "Sie rufen an, sie e-mailen und sie lassen Dich einfach nicht in Ruhe - selbst dann, wenn Du gar keinen Job suchst. Und selbst wenn man eine Anstellung sucht, neigen viele Recruiter dazu, irrelevante Jobangebote zu machen oder Stellen zu empfehlen, deren Profil überhaupt nicht passt - etwa einen Job am anderen Ende des Landes, obwohl man gar nicht bereit ist, umzuziehen." - Dokumentation
Gibt es keine Dokumentation, beschweren sich die Softwareentwickler. Wenn es zuviel ist, beschweren sie sich und wenn sie die Dokumentation selbst erledigen müssen, auch. Sogar über die Art und Weise, wie andere Leute die Dokumentationsaufgabe bewältigen, beschweren sich die Entwickler. <br /><br /> An dieser Stelle seien sich auch endlich einmal alle Entwickler einig, wie Fox betont: "Softwareentwickler wollen eine ausführliche, gut geschriebene und akkurate Dokumentation - aber selber machen wollen sie es nicht." - Meetings
Meetings sind nicht nur für alle anderen ein Problem, sondern auch für Softwareentwickler. Insbesondere dann, wenn es sich um völlig unnötige, zeitraubende und stinklangweilige Zusammenkünfte handelt. Wie Fox erzählt, sind inzwischen auch Devotionalien mit der Aufschrift 'I survived another meeting that should have been an email' erhältlich. - Coworking Spaces
Mit dem Aufstieg der Agilität sind flache Hierarchien, Collaboration und Teamwork zum Alltag in Unternehmen geworden - insbesondere für Software-Development-Teams. Gerade die können ihre Arbeit in einem Großraumbüro aber meist nur schwer oder gar nicht bewältigen - sagen zumindest die Zahlen von devRant. <br /><br /> David Fox erklärt: "Es gibt einfach zuviel Ablenkung: die Kollegen unterhalten sich, Meetings werden verpasst, Telefonanrufe überhört. Es gibt auch eine Vielzahl an Beschwerden über den Kaffee im Büro und andere Annehmlichkeiten - oder eben das Gegenteil davon." - Kollegen
Selbsterklärend: Jeder hat wohl einen Kollegen oder eine Kollegin, den beziehungsweise die er ganz besonders schätzt. Nicht. <br /><br /> Im Fall der Softwareentwickler ist die Abneigung gegenüber Kollegen meist entweder in der mangelnden Qualität ihrer Arbeit oder einem völlig aus dem Leim gegangenen Ego begründet, gibt David Fox preis. - Vorstellungsgespräche
Wenn ein Softwareentwickler auf Jobsuche ist und zum Bewerbungsgespräch geladen wird, gibt es danach meist auch etwas zu meckern: <br /><br /> "Dumme Fragen oder die Lösung von völlig praxisfernen Aufgaben im Bewerbungsgespräch stoßen den Developern ebenso sauer auf, wie ein Gesprächspartner, der überhaupt nicht weiß, was ein Entwickler eigentlich genau macht", so Fox. - Fehler & Bugs
Softwareentwickler haben tagein, tagaus mit Fehlern und Bugs zu tun. Deswegen glaubt devRant-Gründer Fox, dass Entwickler in dieser Sache anders ticken: <br /><br /> "Die meisten anderen Probleme erfahren keine positive Auflösung, aber Bugs und Fehler sind behebbar und das fühlt sich gut an." - Quality Assurance
Die Quality Assurance (QA) - oder Qualitätssicherung - ist ein kritischer Teil der Softwareentwicklung. Dennoch bemängeln Softwareentwickler an QA-Experten häufig dieselben Dinge wie an Produkt- und Projektmanagern, so Fox. <br /><br /> "Die Qualitätssicherung bekommt das Produkt oder Projekt in die Hände, wenn die Entwickler es abgeschlossen haben. Deswegen verstehen sie oft nicht, welche Hürden und Workarounds die Entwickler im Entstehungsprozess bewältigen mussten. Offensichtlich kommt es auch regelmäßig vor, dass QA-Leute die Entwickler bitten, Bereiche nochmals zu überarbeiten, die sie auch selbst bewältigen könnten."
Python Packages?
Wenn Sie eine Distribution wie ActivePython oder Anaconda nutzen, sind viele Python-Bibliotheken von Drittanbietern entweder bereits vorinstalliert oder über ein Tool zugänglich. Bei CPython - und einigen anderen - kommen Sie nicht in den Genuss solcher Annehmlichkeiten. Hier gestaltet sich die Einbindung von Drittanbieter-Bibliotheken etwas schwieriger.
Die Python Software Foundation hält eine riesige Sammlung von Bibliotheken vorrätig: den Python Package Index (PyPI). Jedes dieser Packages kann über das pip-Kommandozeilen-Tool hinzugefügt werden. Allerdings erfordern einige dieser Pakete Binärdateien, die für spezifische Plattformen gemacht sind. Und nicht jedes PyPI-Package beinhaltet Binärdateien für jede Plattform. Dieses Problem zu bewältigen, ist bei Linux kein Problem. Hier ist es generell möglich, binaries auch "on the fly" zu erstellen. Bei Windows ist das nicht der Fall.
Eine (zumindest teilweise) Lösung kommt von Christoph Gohlke von der University of California: Er bietet eine - inoffizielle - Sammlung vorgefertigter Windows-binaries für viele Python Packages. Viele der Packages sind wiederum in erster Linie für wissenschaftliche Applikationen oder maschinelles Lernen (zum Beispiel NumPy und TensorFlow) gedacht. Viele decken aber auch etwas breiter gefasste Nutzungsszenarien ab (zum Beispiel Pillow für Bildbearbeitung oder den asynchronen http-Server Aiohttp).
Wenn Sie Windows nutzen
Für bestimmte Python-Programmier-Projekte brauchen Windows-Nutzer einige Handgriffe mehr als die User von Linux, MacOS und anderen Unix-basierten Betriebssystemen. Eine häufig fehlende "Zutat", die vom Windows-Entwickler gestellt werden muss, ist ein C Compiler. Python braucht diesen für einige Packages, um bestimmte Module bilden zu können, die nicht im Binär-Format vorliegen. Cython beispielsweise übersetzt Python in C-Code und braucht einen C Compiler um funktionierende binaries zu produzieren.
Die gute Nachricht: Microsofts hauseigener C Compiler kommt bereits mit der kostenlosen Community Edition von Visual Studio. Außerdem steht Ihnen die Möglichkeit offen, die Gnu Compiler Collection (GCC) zu installieren. Weil der C Compiler in Visual Studio aber auch für CPython auf Windows zur Anwendung kommt, verspricht dessen Nutzung auch ein konsistenteres Nutzererlebnis.
Das LLVM Compiler Framework ist ein Drittanbieter-Zusatz, der typischerweise nicht standardmäßig vertreten ist, den Sie aber dennoch brauchen könnten. Einige Python-Projekte wie Numba nutzen LLVM.
Zu guter Letzt müssen Windows-Nutzer standardmäßig auch auf Revision Control Software wie Git verzichten. In der Folge könnten einige IDEs die Zusammenarbeit verweigern. Deshalb sollten Sie Git für Windows entweder manuell herunterladen oder es über Chocolatey installieren.
Halten Sie Ihren Python-Code sauber
Die meisten Programmiersprachen bieten Funktionen wie statische Code-Analyse oder "syntax standardization". Bei Python erledigt eine Kollektion von Packages diese Aufgaben. Alle größeren IDEs bieten hierfür Support, es macht also Sinn, diese zu ihrem Arbeitsplatz hinzuzufügen.
PEP 8 ist ein Python Code-Styleguide. Wenn Sie dessen Regeln auf Ihre Codebasis anwenden wollen, erledigt das Tool autopep8 das automatisiert, bringt Ihren Python-Programmcode auf Linie und zeigt Warnungen an, wenn bestimmte Stellen im Code Beachtung verlangen. Die meisten IDEs mit Python-Support akzeptieren autopep8 als Standard-Formatter.
Ein neues Projekt in Sachen Code-Formatierung ist yapf. Dieses ursprünglich von Google entwickelte Tool formatiert Ihre Dokumente komplett und entfernt alle bestehenden Formatierungen (und Reformatierungen), die nach PEP8-Regeln vorgenommen wurden.
Dynamische Programmiersprachen wie Python erlauben Entwicklern kleinere Bugs. Im Fall von Python gibt es unterstützende Tools, um diese zu verhindern. Zum Beispiel Pylint, das lange Zeit als das Tool schlechthin für statische Datenanalysen in Python galt oder Mypy.
Legen Sie Python Projekt-Templates an
Wenn Sie sich dabei erwischen, wie Sie immer wieder dieselben Projekte anlegen, sparen Sie sich doch etwas Nerven und Zeit und kreieren Sie eine Vorlage. Dafür gibt es mehrere Möglichkeiten: Zum Beispiel indem Sie ein Git Repository erstellen, das Sie laufend aktualisieren.
Mit Python können Sie das aber noch ein bisschen weiter treiben - und zwar mit Cookiecutter. Neue Python-Projekte können mit einem Cookiecutter-Template "ge-bootstrapped" werden. Diese Vorlagen können wiederum bei Git gespeichert und auf Anfrage auch geklont werden. Die Chancen stehen außerdem nicht schlecht, dass es bereits ein Cookiecutter-Template gibt, um Ihr Projekt zum Laufen zu bringen. Selbst kreierte Templates können übrigens auch geteilt werden.
Programmieren mit Python in virtuellen Umgebungen
Je mehr Python-Projekte sie starten, desto mehr Bibliotheken kommen zum Einsatz. Beispiel: Sie wollen ein Legacy-Projekt behalten, das auf einer alten Version von etwas aufbaut und gleichzeitig einen Ersatz bauen, der auf den neueren Versionen der gleichen Bibliotheken aufbaut.
Bei Python gibt es einen Weg, um dieses Problem zu umgehen: virtuelle Umgebungen. Denn die erlauben einem Projektordner, seine eigenen lokalen Kopien der Bibliotheken vorzuhalten, deren Versionen neuer sind, als die auf dem Interpreter installierten. Das Gros der Arbeit übernimmt das Kommandozeilen-Tool virtualenv, das auch den Wechsel zwischen verschiedenen virtuellen Umgebungen ermöglicht. Mit dem Tool virtualenvwrapper lässt sich das Erstellen virtueller Umgebungen automatisieren. Die Chancen, dass Ihre IDE virtuelle Python-Umgebungen unterstützt, stehen gut - wie das Beispiel PyCharm zeigt.
Eine Alternative zu virtuellen Umgebungen ist die Nutzung einer Standalone-Installation der Python-Laufzeitumgebung. CPython für Windows kann zum Beispiel als "embeddable zip file" heruntergeladen werden und bringt dann eine eigene Minimalinstallation von Python mit. Wenn Sie bestimmte Funktionen in verschiedenen Versionen einer Laufzeitumgebung für Python testen wollen und nicht jede Version eigens installieren wollen, ist diese Lösung für Sie gemacht.
Unterstützen Sie andere Python-Einsteiger
Wenn Sie ein Python-Projekt kreiert haben, von dem Sie glauben, dass es für andere User hilfreich sein könnte: Teilen Sie es mit der Community! (fm)
Dieser Artikel basiert auf einem Beitrag unserer US-Schwesterpublikation infoworld.com.