Python unter Linux

Zurück zur Hauptseite


Wer Python speziell mit Linux machen möchte und außerdem möglichst viel über Linux erfahren will, der sollte sich den
deutschen Dreh- und Angelpunkt für Linux ansehen. Dort sind auch weitere Pythonlinks zu finden, wenn man bei den Links nach "Programmierung - Pythonprogrammierung unter Linux" schaut.

Nachfolgend sollen hier zu speziellen Problemen Hinweise gegeben werden, die nur der Linuxbenutzer so vorfindet. Vieles davon ist dem alteingesessenem Linuxnutzer ohnehin klar. Besonders zielen diese Hinweise deshalb auf Nutzer, die vielleicht schon mit Python unter Windows gearbeitet haben. Aber auch der Linuxkenner, der sich Python neu erobern will, kann sich manche Suche durch diese Hinweise abkürzen.

Die nachfolgenden Betrachtungen gliedern sich wie folgt:

1 Installation
1.1 Vorbemerkungen

1.2 Tk nachinstallieren
2 Einrichten von Idle
2.1 Vorbemerkungen

2.2 Wo finde ich Idle?
2.3 Die Schrift ist mir zu klein
2.4 Quelltexte aus Idle farbig ausdrucken 3 Die Wahl des Editors
3.1 Syntax - Farbhervorhebungen

4 Plattformunabhängigkeit
4.1 Vorbemerkungen
4.2 der Wagenrücklauf
4.3 Umlaute/Sonderzeichen
4.4 Module, die nur unter einem Betriebssystem laufen
4.5 plattformübergreifende GUI

5 Hinweise zum Starten von Python - Scripten
5.1 aus der Kommandozeile (verschwinden verhindern)
5.2 Magic-Line
5.3 Zuordnung von Scripten zum ausführenden Programm unter KDE


1 Installation

1.1 Vorbemerkungen

Wer eine der gängigen Linux  - Distributionen benutzt, der hat Python mit im Lieferumfang. Allerdings aufgepasst! Python wird bei manchen Installationen nicht automatisch oder nur in einer Minimalausstattung installiert. Auch ist meist die Version2.x laufbereit, wer aber mit 3.x arbneiten möchte, muss sich zusätzliche Pakete von der Installations-CD/DVD oder aus dem Netz holen.

Ob Python schon lauffähig ist, ist leicht festzustellen, indem man in der Textkonsole einfach "python" eingibt. Das geht sowohl im Textmodus, als auch in einem Konsolenfenster mit einem der schönen Windowmanager unter X. Wenn dann der Python - Interpreter startet, kann man gleich weiterprobieren und zum Bsp. import - Kommandos eingeben von den Bibliotheken, die man gern benutzen möchte wie z.B.

>>> import Tkinter (für Python-Versionen 2.x, sonst natürlich tkinter

>>> import curses

Kommt keine Fehlermeldung, dann sind diese Teile vorhanden und können genutzt werden. Fehlen sie, was man an den Fehlermeldungen merkt, ist Nachinstallieren angesagt. Besonders Tkinter ist unverzichtbar, wenn man mit der grafischen Programmierumgebung Idle arbeiten möchte.



1.2 Tk nachinstallieren

Lässt sich Tkinter nicht importieren, muss nachinstalliert werden. Dabei sollte man das Administrationsmodul der jeweiligen Distribution benutzen. So wird sichergestellt, dass abhängige Pakete mitinstalliert werden. Ein solches wäre hier z.B. ein Paket für Tk, das wiederum auf Tcl beruht.
Eine mögliche Ursache für das Nichtfunktionieren von Tkinter wäre nämlich auch, die fehlende Installation von Tk. Ob das gegeben ist, prüft man z.B. dadurch, dass man in der Textkonsole auf der X - Oberfläche das Kommando  "wish" eingibt. Dann sollte auf dem Bildschirm ein leeres Tk - Fenster erscheinen. Kommt das nicht, muß Tk nachinstalliert werden.

Wer es sich einfach machen will, sucht einfach das Paket für Idle. Es heißt z.B. unter Debian: idle-python3.1

Da bei der Installation die Abhängigkeiten berücksichtigt werden, wird automatisch Tk und Tcl mit installiert, wenn es noch nicht vorhanden war.


2 Einrichten von Idle

2.1 Vorbemerkungen

Wer unter X entwickeln möchte, findet schnell die richtige Hilfe. Es steht hierfür die ldle zur Verfügung, die selbst Tkinter benutzt und einen recht ordentlichen Editor, einen Objektbrowser und einen Debugger enthält. Der Editor unterstützt die Syntax - Farbhervorhebung. Dadurch werden die verschiedenen Syntaxelemente wie Schlüsselwörter, Variablennamen, Strings, Kommentar usw. in verschiedenen Farben dargestellt. Leider lässt sich diese Darstellung mit der Idle allein nicht farbig ausdrucken.


2.2 Wo finde ich Idle?

Um festzustellen, ob Idle schon installiert ist, muss sie erstmal aufgespürt werden. Sie befindet sich nicht zwangsläufig an einer vorgegebenen Position. Deshalb bemüht man am besten die Dateisuche, indem man im Verzeichnis /usr nach idle.py sucht. Dies ist auch die Startdatei für Idle. Hat man sie gefunden, kann man sich einen Link dorthin auf den Desktop oder ins Homeverzeichnis oder einen anderen Lieblingsplatz legen.


2.3 Die Schrift ist mir zu klein

Im Hauptmenue von Idel gibt es ein Untermenue "configure IDLE". Dort lässt sich die Schrift verändern.


2.4 Quelltexte aus Idle farbig ausdrucken

Das hier ist kein spezielles Linux-Problem, denn auch unter Windows werden die Idle-Quelltexte schön mit Syntax-Hervorhebung angezeigt, aber aus dem Drucker kommen sie nur schwarz/weiß. Dafür gibt es aber ein Erweiterungsmodul für die Idle, das sich IDLE2HTML nennt. Es verankert sich im Idle-Menue und wenn man es anwählt, dann erzeugt es eine  html-Seite mit farbigen Python-Quelltext. Man findet es leicht mit Google.



3 Die Wahl des Editors

3.1 Vorbemerkungen

Unter Linux kann man mit Python in vielen Spielarten arbeiten. So geht es in der Textkonsole, wobei man dann am besten mit zwei Konsolen arbeitet. Einmal die Kommandozeile, zum Aufrufen des Pythoninterpreters + Quellprogramm und auf der anderen Konsole der Texteditor zum Bearbeiten des jeweiligen Pythonmoduls. Als Editor ist wieder das ganze Spektrum von XEmacs bis hin zu den Editoren, die in KDE eingebaut sind, möglich. Nach jedem Geschmack ist alles dabei, wie unter Linux üblich. Wer mit Idle arbeitet, findet hier eine vollständige Programmierumgebung vor, aus der man heraus die entworfenen Module gleich starten kann. Ebenso kann man interaktiv einzelne Befehlszeilen dem Interpreter anbieten. Aber auch wer mit KWrite arbeitet, oder einem anderen Editor, der muss nach jeder Änderung den Quelltext abspeichern und kann ihn dann in der Kommandozeile erneut starten. Dazu benutzt man die History-Funktion in der shell, indem man mit der Kursortaste aufwärts den letzten komplett geschriebenen Befehl wieder hervorholt.


3.2 Syntax - Farbhervorhebungen

So gibt es für den XEmacs, wie auch für den KWrite ein Ergänzungsmodul für die farbliche Hervorhebung von Python -Schlüsselwörtern. Diese Funktion ist übrigens in der Entwicklungsumgebung Idle ebenfalls fest eingebaut. Ferner bietet der erweiterte Texteditor unter KDE die Möglichkeit, für seine Farbunterstützung zwischen verschiedenen Programmiersprachen auszuwählen. Die zugeordneten Farben lassen sich auch abändern. So können diese z.B. bei KWrite in den Menüpunkten zur Einrichtung des Editors einzeln angewählt und eingestellt werden.

4 Plattformunabhängigkeit

4.1 Vorbemerkungen

Ein großer Vorteil von Python ist die Möglichkeit, auf sehr viel verschiedenen Plattformen arbeiten zu können. Dazu muß für das jeweilige Betriebssystem ein Pythoninterpreter zur Verfügung stehen. Dies ist für die wichtigen Betriebssysteme, aber auch für etwas seltenere (wie z.B. EPOC für Psion-PDA) Plattformen gegeben. Nun gibt es Problemfelder, die dabei zu beachten sind. So gibt es z.B. Unterschiede in der Art, wie unter verschiedenen Betriebssystemen Daten abgespeichert werden. Hierzu wird nachfolgend zu Wagenrückläufen und Umlauten etwas gesagt. Ferner kann es sein, dass Module, die erweiterte Funktionen bereitstellen und dabei oft spezifische Möglichkeiten des jeweiligen Betriebssystems herauskitzeln, eben ihre Plattformunabhängigkeit einbüßen. Das heißt, dass Programme, die solche Module verwenden, nicht plattformunabhängig bleiben, sofern nicht geeignete Gegenmaßnahmen getroffen werden.
Ein weiteres Problem, dass auch schon früher unangenehm auftauchte, als die Universalsprache JAVA modern wurde, ist die Tatsache, dass Programme mit grafischen Oberflächen auf verschiedenen Plattformen jeweil anders aussehen.


4.2 der Wagenrücklauf

Beginnen wir mit dem Zeilenende/Zeilenwechsel. Hier werden bei MS-DOS/MS-Windows-Programmen zwei Byte angehängt, nämlich LF und CR. Bei Unix/Linux dagegen wird nur LF nachgestellt. Das macht sich dann z.B. so bemerkbar, dass beim Öffnen eines Linux-Textes unter einfachen Windows-Editoren der komplette Text in einer Zeile (die ewig nicht enden will) dargestellt wird. Solche Daten muss man vor dem Portieren auf die andere Plattform mit einem geeigneten Umwandlungsprogramm anpassen oder mit einem Editor behandeln, der beide Systeme (umschaltbar) speichern kann (wie z.B. KWrite) und dann in der richtigen Form abspeichern. Ab der Version Python 2.3 soll dieses Problem erledigt sein, weil man Files mit einer "Universalbetriebsart" speichern und laden kann. Ich habe das selbst noch nicht ausprobiert, weil ich auf Linux noch Python 2.2 benutze. Abhilfe auch mit älteren Python-Versionen könnte man selbst programmieren, indem die Texte in eine Direktzugriffsdatei gelegt werden, die über selbst definierte Zeilenendezeichen organisiert wird. Bisher habe ich mich mit dem Konvertieren begnügt, weil es auch nicht sooo häufig vorkam. Wer aber ständig mit seinem Daten die Plattform wechseln muss, sollte drüber nachdenken.


4.3 Umlaute/Sonderzeichen

Seit ich mit Python 2.2 arbeite, tritt das Problem eigentlich nicht mehr auf, aber früher war es schon sehr störend. Umlaute und Sonderzeichen (nämlich die Zeichen, die im ASCII - Code in der hinteren Hälfte stehen (also größer als Dezimal 127) können verschieden kodiert sein. Erfahrene mehrjährige Programmierer kennen es vielleicht noch beim Wechsel von ASCII und ANSI - Kode. Irgendwie muss es jetzt besser gehen, weil die Umstellung auf Unicode das Problem wohl umgeht. Dafür gibt es aber ein anderes Problem, nämlich die Umlauteverweigerung durch Idle. Stehen Umlaute  (oder auch ß) im Quelltext oder nur als Kommentare, wird das Abspeichern des Textes abgelehnt. Auch die Eingabe dieser Zeichen mit raw_input() wird abgewehrt. Jedoch laufen solche Programme in der Kommandozeile ohne Schwierigkeiten. Auch hier wäre eine Selbsthilfe für ältere Pythonversionen denkbar, indem diese Sonderzeichen mit eigenen Mitteln maskiert werde, z.B. 'ä' als '/a' und dann natürlich auch '/' als '//' usw.


4.4 Module, die nur unter einem Betriebssystem laufen

Bei Modulsammlungen ist aus gutem Grund mit angegeben, für welche Betriebssysteme die einzelnen Module geeignet sind. Wer also unbedingt plattformübergreifend bleiben will, muss die Finger von solchen speziellen Modulen lassen, die auf ein Betriebssystem festgelegt sind. Es gibt in einigen Fällen mitunter Möglichkeiten zur Abhilfe. Voraussetzung ist, dass die besondere benötigte Funktion nun vielleicht in zwei verschiedenen Modulen für beide benötigten Betriebssystem aber getrennt vorhanden sind. So gibt es für die Möglichkeit der Kursorpositionierung im Textmodus z.B die Module msvcrt (Windows) und curses (Linux). Hier hilft ein plattformabhängiger import. Mit if und Variablen, die das darunterliegende BS melden (z.B. import sys, print sys.platform) kann man dem Programm ermöglichen, das darunterliegende Betriebssystem zu ermitteln, und die benötigte Funktion dann mit dem geeigneten Modul bereitzustellen. Viel Aufwand! Aber was soll man machen.


4.5 plattformübergreifende GUI

Nicht jede grafische Erweiterung ist für verschiedene Plattformen verfügbar. Es sind in Python zahlreiche Schnittstellen vorhanden, um richtige X - Programme zusammenzuschreiben. Davon sind einige wieder nur auf für bestimmte Betriebssysteme verfügbar. Andere gehen auch für mehrere Plattformen. Ich will hier nur zwei hervorheben. Die erste der beiden  geht über Tcl/Tk, wobei diese Programme dann auch unter Windows laufen können, wenn dort Tcl/Tk vorhanden ist. Das wird aber bereits beim Installieren des Pythonstandardpaketes für Windows mitgebracht. Um mit Tk pythongemäß arbeiten zu können, gibt es eine spezielle Schnittstelle, Tkinter. Dabei handelt es sich um ein Modul, das die Tk-Funktionen auf die Pythonsprache adaptiert (Wrapper).
Eine weiter GUI, neben anderen, wird durch wxPython angeboten, das auf wxWindows aufsetzt. Dies ist ebenfalls für Windows und Linux verfügbar.



5 Hinweise zum Starten von Python - Scripten


5.1 aus der Kommandozeile


In der Kommandozeile ist eigetlich alles klar. Wir geben einfach ein:

python meinprogramm.py

und in unserem Terminalfenster ist alles zu sehen. Besonders wichtig ist diese Vorgehensweise, wenn man zurückgegebene Fehlermeldungen sehen möchte, solange das Programm noch nicht richtig läuft.


5.2 Magic-Line

Wie unter Linux üblich, werden ausführbare Scripten mit dem entsprechenden Attribut versehen und in der ersten Zeile wird ein Hinweis eingetragen, welches Programm dies Script audführen soll. Mit dem Eintrag

 #! /usr/bin/env python

wird das Programm env aufgerufen, das den mitgegebenen Parameter zur Ausführung bringt. Die Einleitung #! weist hier nicht auf einen Kommentar, sondern auf eine sogenannte Magic-Line hin, die festlegt, zu welchem Programm unser Script gehört. Nun können wir die Datei durch Angabe des Namens aufrufen. Tun wir dies nun in einer grafischen Oberfläche, z.B. KDE, indem wir das Icon anklicken, folgt die Enttäuschung sogleich. Das Programm blitzt kurz auf und ist weg. Gab es einen Fehler? Nun ja, es war ein Denkfehler. Das Programm ist schon fertig. Es hat seine Ausgabe auf den Bildschirm gebracht und sich dann beendet. Dies trifft natürlich nicht für Programme zu, die eine eigene shell beinhalten, die Kommandos erwartet und sich erst mit quit beendet. Auch Tkinter-Programme haben eine Hauptschleife, die sich erst beendet, wenn das Fenster geschlossen oder ein "exit-Button" betätigt wird.
Aber bei einfachen Programmen, die einfach nur ein Ergebnis zeigen sollen, tritt der Effekt des Verschwindens auf. Auch hier geht es ganz einfach. Wir fügen am Ende des Programms etwas ein, wie z.B.

warte = raw_input('beenden mit <enter>')

und schon verschwinden die Ergebnisse erst, wenn wir nach dem Lesen <enter> drücken.


5.3 Zuordnung von Scripten zum ausführenden Programm unter KDE

Es geht auch noch anders. Klicken wir unter KDE das Icon unseres Scriptes mit der echten Maustaste an, können wir auswählen 'öffnen mit ...'. Hier öffnet sich ein Fenster, was nicht nur erlaubt, ein Programm, z.B. Python auszuwählen, sondern man kann auch festlegen, dass dieser Dateityp immer wieder mit Python geöffnet werden soll und dass sich KDE das merken soll. Wieder ein Hauch von Windows. Übrigens ist die Vorgehensweise bei Gnome-Oberflächen so ähnlich.