Eric – eine umfangreiche IDE für die Entwicklung von Python-Programmen

Aus LinuxUser 02/2011

Eric – eine umfangreiche IDE für die Entwicklung von Python-Programmen

© Lolamix, sxc.hu

Gut entwickelt

Die Python-IDE Eric4 vereinfacht das Schreiben von Skripten und komplexen Programmen durch zahlreiche Komfortfunktionen.

Für Python [1] gibt es im Bereich der freien Software mittlerweile eine ganze Reihe von Programmierumgebungen [2]. Das Tool Eric von Detlev Offenbach [3] gehört zu den ausgereifteren und steht für Python 2.x (Eric4) mittlerweile in der Version 4.4.9 zur Verfügung (4.4.7 in Debian “Testing”, 4.4.4a in Ubuntu “Maverick”, 4.3.7 in Fedora) und präsentiert sich als umfangreiche, schlichte IDE speziell für Python, die aber auch mit Ruby umgehen kann. Bei Bedarf installieren Sie Eric auf Systemen wie Debian oder Ubuntu ohne weiteres über den Paketmanager (sudo apt-get install eric). Für Informationen zu Eric5 lesen Sie den Kasten “Eric5 für Python 3”.

Vor allem wenn Sie Qt-Applikationen oder selbst Eric-Plugins schreiben möchten, empfiehlt es sich, das Zusatzpaket eric-api-files mit zu installieren, das spezielle Vorlagen für das Vervollständigen von Code enthält. Wenn Sie Plugins über Eric installieren, dann gilt es unter Umständen, zusätzliche Software per Hand nachzuziehen. Obwohl das Paketmanagement das Paket python-qt4-sql nur als Vorschlag anzeigt (apt-cache show eric), lohnt es sich, dieses direkt mit zu installieren. Das Standard-Plugin Assistant Eric greift darauf zu. Außerdem gibt es manchmal Fehlermeldungen, wenn sich das Paket libqt4-sql-sqlite nicht im System befindet.

Eric5 für Python 3

Mit dem Release von Python 2.7 im Juli 2010 endet der Versionszweig 2.x offiziell. Er wird aber noch gepflegt, auch Updates fließen ein. Da der Nachfolger Python 3 sich nicht mehr abwärtskompatibel verhält, sind Entwickler dazu angehalten, nun ihre Programme für den Zweig 3.x umzuschreiben, was naturgemäß nur schleppend geschieht. Python 2.6 fungiert noch immer als Standard für Debian 6.0 “Squeeze”, und eine Menge beliebter Bibliotheken haben weiterhin ihre Probleme mit dem entscheidend veränderten Python 3 (aktuell 3.1).

Einige Applikationen und Module unterhalten – wie Python selbst bisher – zwei getrennte, parallele Entwicklungszweige. Das in Python geschriebene Eric findet sich in der aktuellen Python-3-Version (5.0.3) noch nicht in Debian oder Ubuntu. Unter anderem gab es zu Redaktionsschluss immer noch Probleme mit den Python-3-Bindings der Qt4-Bibliothek PyQt, obwohl aktuelle Versionen davon Python 3 eigentlich bereits unterstützen (Debian Bug #558389). Der Schwerpunkt der Weiterentwicklung von Eric findet bereits in Eric5 statt. Hier gibt es ein Plugin für die Mercurial-Schnittstelle, Funktionen für die Echtzeit-Kollaboration in Form eines Chat-Widgets und eines Shared Editors sowie ein Interface zum Codechecker Pyflakes.

Eric5 ohne Hilfe des Paketmanagers zu installieren, bereitet einige Probleme: Das Kommando python3 install.py im Hauptverzeichnis des entpackten Tarballs führt zum Hinweis, dass das Modul PyQt4.QtCore nicht bereit steht (Problem mit den Python-3-Bindings). Versuchen Sie den Trick, die PyQt-Bibliothek (aktuell im Python Package Index: v4.8.1) in Debian “Testing” manuell zu installieren, erhalten Sie den Hinweis, dass die vorhandene Version des Interface-Generators SIP (v4.10.2) damit nicht zusammenarbeitet, und somit manuell in der aktuellsten Version nachinstalliert wäre (Package Index: v4.11.2). Allerdings macht es keinen Sinn, sich so weitab vom Upstream-Status der verwendeten Distribution zu bewegen. So bleibt nur übrig, abzuwarten, bis sich alles weiterentwickelt hat.

Grundfunktionen

Startet Sie die IDE, so öffnet sich kurz ein Splashscreen mit dem Eric-Maskottchen – einem kleinen, frechen Troll. Kurz danach erscheint der Hauptbildschirm. In der Mitte befindet sich das Editorfenster, um das sich eine Reihe von Toolboxen anordnen, darunter ein Terminalfenster und eine Python-Shell (Abbildung 1). Details des Layouts passen sich dabei der Bildschirmauflösung an.

Abbildung 1: Das Hauptfenster bietet neben dem Code-Editor Zugriff auf ein Terminal, eine Python-Shell und zeigt zudem die Struktur des Projektes und die Todo-Liste an.

Abbildung 1: Das Hauptfenster bietet neben dem Code-Editor Zugriff auf ein Terminal, eine Python-Shell und zeigt zudem die Struktur des Projektes und die Todo-Liste an.

Das Programm bietet die Möglichkeit, das Aussehen individuell zu verändern und in verschiedenen Profilen abzuspeichern (siehe Dropdown-Menü Fenster). Selbst wer nicht gleich Klassen und Module, sondern erst mal einfachere Programme schreibt, stellt schnell fest, dass es in Eric an allen Ecken und Enden kleine nützliche Helferlein gibt.

Haben Sie Ihren ersten Programmcode geschrieben und diesen als Python-Programm mit der Endung .py abgespeichert, dann zeigt die IDE zum Beispiel sofort alle syntaktisch falschen Stellen im Code an. Starten Sie nach deren Beseitigung dann das Programm mit Start | Script ausführen, hebt die Software auch noch tiefer sitzende Fehler im Quellcode automatisch hervor. Eric fragt vor dem Ausführen noch nach optionalen Werten wie zum Beispiel Kommandozeilenparametern.

Die Applikation bietet selbstverständlich Syntax-Highlighting, beherrscht aber auch das automatische Vervollständigen des Codes (nach Aktivieren in den Einstellungen). Sie prüft das Setzen von Klammern und kontrolliert die Einrücktiefe, aus der sich in Python die Konstruktion von Klassen, Funktionen oder Schleifen ergibt.

Außerdem erlaubt Eric, zusammenhängende Abschnitte wie zum Beispiel Funktionen nach Bedarf ein- und wieder aufzufalten (“Code folding”). Die Editor zeigt außerdem die Einrückebenen grafisch an und erlaubt, Lesezeichen an beliebigen Stellen im Code anzubringen. Als nette Dreingabe exportiert die Software auf Wunsch den Quellcode als PDF-Datei, HTML-, RTF- oder TeX-Dokument.

Debugging

Existieren logische Fehler im Programm, spüren Sie diese in einer IDE wie Eric am einfachsten mit Hilfe des Debuggers auf. Dazu starten Sie ihr selbstgeschriebenes Programm im Debugging-Modus (Start | Debug Skript). Vorher setzen Sie noch Haltepunkte (Debug | Haltepunkt setzen) an den Quellcode, an denen die Ausführung des Programms angehalten wird. Die Anzeige schaltet dann auf das Profil Debuggen um (Fenster | Debuggen Profil), und rechts neben dem Editorfenster öffnet sich ein weiterer Dialog mit verschiedenen Analyse-Listen (Dateibrowser, lokale und globale Variablen), die den Status des Programms am Haltepunkt jeweils genau abbilden (Abbildung 2).

Abbildung 2: Im Debugging-Profil sehen Sie beispielsweise, welche Werte lokale und globale Variablen zur Laufzeit haben.

Abbildung 2: Im Debugging-Profil sehen Sie beispielsweise, welche Werte lokale und globale Variablen zur Laufzeit haben.

Jetzt haben Sie die Möglichkeit, zwischen den Haltepunkten hin und her zu springen (Debug | Nächster/Vorheriger Haltepunkt) und sich in Einzelschritten (Debug | Einzelschritt) oder größeren, ganzen Prozedurschritten umherzubewegen, um die Interna des Programmablaufs im Detail nachzuvollziehen. Auf diese Weise decken Sie verborgene Fehler im Code auf, wie etwa falsch zugewiesene Variablen.

Versionskontrolle

Eine luxuriöse IDE wie Eric entwickelt ihren vollen Funktionsumfang allerdings erst dann so richtig, wenn Sie ganze Projekte damit betreuen und mehrere aufeinander bezogene Dateien gleichzeitig damit pflegen. Mit Projekt | Neu erstellen Sie den Rahmen für ein solches Unterfangen. Das Programm fragt zunächst die Projekteigenschaften ab – unter anderem, ob Sie schon vorhandene Dateien hinzufügen wollen.

Optional wählen Sie ein Versionskontrollsystem aus. Versionskontrolle gehört zu den wichtigen Bestandteilen von fortgeschrittener Software-Entwicklung. Aber auch Einsteigern bietet die Möglichkeit Vorteile, auf Knopfdruck ältere Versionen wiederzuherstellen. Außerdem liegt in einem zentralem Repository der Schlüssel zum Entwickeln mit mehreren Beteiligten.

Die Grundinstallation von Eric bietet ein Interface für Subversion (SVN, [4]). Daneben existieren Plugins für andere Versionskontrollsysteme wie CVS und Mercurial. Ein lokales Repository für Subversion legen Sie auf der Kommandozeile via svnadmin create ~/src/Projekt an. Das setzt natürlich voraus, dass Sie das Paket subversion installiert haben.

Fragt Eric beim Erstellen eines neuen Projektes nach den Daten des Repositorys, so wählen Sie nun Protokoll: file:// und geben den entsprechenden Pfad an. Eric erstellt dann die Basisdateien eines Projektes (den Marker __init__.py und Projekt.e4p) und bucht sie gemäß der Standard-Hierarchiestruktur von Subversion direkt ins Unterverzeichnis trunk im Repository ein. Die verschiedenen Funktionen von Subversion erreichen Sie nun bequem über Projekt | Versionskontrolle.

Genau so gut funktioniert es, mit verfügbaren Netzwerkprotokollen von Subversion entfernte Repositorien anzusprechen. Jede neue Datei im Projekt steht nun automatisch unter der Versionskontrolle. Falls gewünscht, entfernen Sie ein File gegebenenfalls im Dateibrowser oben links mit Rechtsklick | Versionskontrolle | Vom Repository (und der Platte) löschen aus der Versionskontrolle.

Erstellen Sie bei geöffnetem Projekt eine neue Datei oder ein Modul mit Datei | Neu, müssen Sie diese zunächst mit Datei | In Projekt speichern abspeichern. Danach erscheint in der Projektanzeige oben links das neue Modul mit allen Variablen, Funktionen und Klassen im Datei- beziehungsweise Klassenbrowser.

Interfaces

Eric bietet Interfaces für eine ganze Reihe von Tools, die beim Entwickeln von Software mit Python helfen. Zum Teil gehören die Plugins, die mehr Flexibilität bieten, nicht zur Standard-Distribution. Um also beispielsweise die Funktion für den Quellcode-Checker Pylint [5] nachzuziehen, wechseln Sie mit Plugins | Repository in den entsprechenden Dialog, wählen das Plugin aus, laden es herunter und installieren es. Ergibt die Prüfung unter Plugins | Plugin Informationen, dass es noch nicht aktiv ist, holen Sie das mit Rechtsklick | Aktivieren nach.

Haben Sie nun auch noch das Paket pylint installiert (v0.21.1 in Debian “Testing” und Ubuntu “Maverick”), gilt es noch, Eric neuzustarten. Danach werten Sie Ihren Code über Projekt | Prüfen | PyLint ausführen auf Schwächen hin aus. In Abbildung 3 rügt der Checker zum Beispiel fehlende Docstrings. Auch Code-Profiling mit Hilfe des Moduls profile[6] (Paket python-profiler) gehört zum Funktionsumfang von Eric.

Abbildung 3: Das Pylint-Plugin fördert Schwächen im Quellcode zutage.

Abbildung 3: Das Pylint-Plugin fördert Schwächen im Quellcode zutage.

Darüber hinaus bietet die IDE Interfaces für Methoden zum Code-Refactoring, wie zum Beispiel für Bicycle Repair Man [7] (Standard) oder alternativ für Rope [8]. Daneben existiert die Möglichkeit, untergeordnete Programmeinheiten, wie Module, mit Hilfe des Frameworks Unittest [9] unabhängig vorzutesten.

Wizards

Eric bietet eine ganze Reihe von Wizards für das einfache Generieren von Python-Quellcode an, die in der deutschen Version “Autopiloten” heißen. Von diesen fällt zuerst der Generator für reguläre Ausdrücke in Auge, den Sie über Extras | Autopiloten | Python re Autopilot erreichen.

Hier gilt es, zunächst den gewünschten Python-Zweig auszuwählen und einen Variablennamen zu definieren, mit dem Sie den regulären Ausdruck in den Quellcode einfügen möchten. Es gibt hier Buttons und Hilfen für verschiedene Standard-Elemente, eine Gültigkeitsprüfung, ein Testfeld, eine Undo/Redo-Funktion sowie die Möglichkeit, Konstrukte abzuspeichern und zu importieren.

Abbildung 4: Mit einem entsprechenden Autopiloten definieren Sie via Dialog einen regulären Ausdruck passend zur verwendeten Python-Version.

Abbildung 4: Mit einem entsprechenden Autopiloten definieren Sie via Dialog einen regulären Ausdruck passend zur verwendeten Python-Version.

Ein weiteres Plugin hilft beim Erstellen von Widgets für das GUI-Framework wxPython [10]. Da der Maintainer Eric aber nicht nur mit Qt [11] entwickelt hat, sondern darüber hinaus als IDE für dieses GUI-Framework, verfügt die Applikation über eine Reihe von Autopiloten zum Generieren von Python-Code, mit dem Sie Qt-Elemente über die PyQt-Bindings [12] ansprechen. Möchten Sie eine Stufe weiter gehen, rufen Sie den Qt4-Designer direkt aus dem Programm heraus auf. Letztendlich zeigt sich an dieser Stelle das enorme Potenzial von Eric und sein konkurrenzloser Spezialanwendungsbereich: das Entwickeln von Qt-Applikationen mit Python.

Abbildung 5: Ein nur aus wenigen Zeilen Code bestehender Minibrowser auf Qt-Basis direkt aus der IDE als Python-Skript gestartet.

Abbildung 5: Ein nur aus wenigen Zeilen Code bestehender Minibrowser auf Qt-Basis direkt aus der IDE als Python-Skript gestartet.

Fazit

Eric ist im Laufe der letzten Jahre zu einer umfangreichen und professionellen Entwicklungsumgebung für Python herangereift, die sich ohne weiteres für den täglichen Einsatz empfiehlt. Unglücklicherweise hapert es – typisch für größere Einzelperson-Projekte wie dieses – an der Dokumentation, die sich bisher rein auf das Niveau der Quellcode-Dokumentation auf Grundlage der Docstrings beschränkt. So bleibt dem Anwender bisher nichts anderes übrig, als sich im Netz oder in der Eric-Mailingliste [13] zu informieren, falls etwas nicht wie vorgesehen klappt.

Geduldiges Herumexperimentieren lohnt sich aber auf jeden Fall. Eine umfangreiche IDE wie Eric zu benutzen gehört zu den Grundvoraussetzungen für ambitionierte Python-Entwicklung. Den resultierenden Komfort wissen aber auch angehende Entwickler zu schätzen.

Die IDE basiert auf der gediegenen Qt4-Bibliothek für GUI-Widgets. Diese besonders enge Bindung macht das Eric besonders interessant für Entwickler, die selbst Qt-Applikationen auf der Grundlage von Python erstellen wollen. Zwei Anwendungsstudien auf der Homepage des Projektes, die Implementation eines Log-Parsers und eines rudimentären Webbrowsers [14], demonstrieren das auf beeindruckende Weise.

Glossar

Code-Profiling

Test eines Programms während seines Ablaufs hin auf Daten wie Geschwindigkeit, Prozessaufkommen oder Speicherverbrauch zum Optimieren des Quellcodes bei umfangreicheren Projekten.

Code-Refactoring

Das kontrollierte Umgestalten eines Quellcodes, bei dem ein Tool zum Beispiel beim Ändern des Namens einer Variablen, einer Funktion oder einer Klasse alle Aufrufe davon im gesamten Projekt automatisch mit verändert.

Der Autor

Daniel Stender promoviert in klassischer Indologie und benutzt seit Jahren ausschließlich Debian GNU/Linux auf dem Desktop. Er interessiert sich für die Entwicklung von Open-Source-Applikationen für die Sanskrit-Philologie. Sie finden seinen Blog unter der URL http://www.danielstender.com/granthinam.

LinuxUser 02/2011 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben