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.