Python
Artikel wird überarbeitet
Dieser Artikel wird momentan überarbeitet.
Geplante Fertigstellung: 6.10.2014
Derzeitig gültiger Artikel: Python
Bearbeiter: noisefloor
Solltest du dir nicht sicher sein, ob an dieser Anleitung noch gearbeitet wird, kontrolliere das Datum der letzten Änderung und entscheide, wie du weiter vorgehst.
Achtung: Insbesondere heißt das, dass dieser Artikel noch nicht fertig ist und dass wichtige Teile fehlen oder sogar falsch sein können. Bitte diesen Artikel nicht als Anleitung für Problemlösungen benutzen!
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Python 🇬🇧 ist eine interpretierte, objektorientierte höhere Programmiersprache mit dynamischer Typisierung und Bindung. Sie wurde Anfang der 1990er-Jahre von Guido van Rossum entwickelt. Heute ist Python auf vielen Plattformen 🇬🇧 (z.B. Linux, Unix, OS X, Windows) verfügbar und wird unter Ubuntu für viele zentrale Programme, wie z.B. das Software-Center, benutzt. Python ist, neben C, die offizielle Entwicklersprache von Canonical für Ubuntu.
Python Code ist (eine installierte Python-Version vorausgesetzt) direkt ausführbar, d.h. man muss nicht manuell kompilieren. Im Hintergrund wird dabei der Code zuerst in einen plattformunabhängigen Bytecode übersetzt, welcher dann von einem Interpreter ausgeführt wird. Dies geschieht für den Benutzer unsichtbar im Hintergrund.
Seit Beginn seiner Entwicklung folgt Python zwei grundlegenden Prinzipien:
Einfachheit: Die Syntax von Python ist einfach und verständlich, so dass sich auch Ein- und Umsteiger schnell zurecht finden. Um die Übersichtlichkeit zu erhöhen, erfolgt die Strukturierung von Anweisungsblöcken nicht mit ; oder Klammern, sondern durch Einrückung.
Freiheit: Objektorientierung wird in Python vollständig unterstützt, erzwingt aber keine objektorientierte Programmierung. Python unterstützt zusätzlich verschiedene Programmierstile, wie imperatives, strukturelles, funktionelles oder aspektorientiertes Programmieren.
Zusätzlich verfügt Python neben den eingebauten Funktionen und Typen über eine umfangreiche Standardbibliothek mit Paketen zu den verschiedensten Problemstellungen. Sie reichen von der XML- und HTML-Verarbeitung bis hin zu Funktionen, welche bei der Bearbeitung wissenschaftlicher Probleme helfen. Dies bedeutet bei der Erstellung eines Quellcodes häufig eine erhebliche Zeitersparnis.
Installation¶
Python ist bei einer Ubuntu-Installation bereits enthalten, da auch Systemkomponenten Python als Voraussetzung benötigen. Es gibt sowohl ein Paket für Python 2.7 als auch für Python 3.x. Eine Parallelinstallation von Python 2 und 3 ist problemlos und konfliktfrei möglich.
Python 2.x¶
Python 2.7 (bzw. bei Ubuntu 10.04 noch die Version 2.6) wird über das folgende Paket installiert[1]:
python
Befehl zum Installieren der Pakete:
sudo apt-get install python
Oder mit apturl installieren, Link: apt://python
Python 3.x¶
Python 3.x (bei Ubuntu 12.04 Version 3.2, bei Ubuntu 14.04 Version 3.4) wird mit diesem Paket installiert:
python3
Befehl zum Installieren der Pakete:
sudo apt-get install python3
Oder mit apturl installieren, Link: apt://python3
Dokumentation¶
Die Dokumentation für Python ist zwar komplett online verfügbar, kann aber auch als Paket zum Offline-Lesen installiert werden:
python-doc (Dokumentation zu Python 2.x)
Befehl zum Installieren der Pakete:
sudo apt-get install python-doc
Oder mit apturl installieren, Link: apt://python-doc
und/oder:
python3-doc (Dokumentation zu Python 3.x)
Befehl zum Installieren der Pakete:
sudo apt-get install python3-doc
Oder mit apturl installieren, Link: apt://python3-doc
Die Dokumentation ist anschließend unter /usr/share/doc/python2.7/html/index.html bzw. /usr/share/doc/python3.x/html/index.html zu finden.
Python 3 vs. 2¶
Python 3, welches seit Anfang 2009 verfügbar ist, ist die Python-Version, welche eingesetzt werden sollte.
Python 2.7, der letzte Release des 2er-Zweigs von Python, wurde Mitte 2010 veröffentlicht, ist zwar nach wie vor aktuell und bekommt noch Unterstützung (in Form von Fehlerkorrekturen etc.) bis 2020. Neuerung und Verbesserungen werden aber nicht mehr eingepflegt, diese fließen ausschließlich in Python 3.x ein.
Die einzigen Gründe, weswegen Python 2.7 noch eingesetzt wird, sind:
wenn ein Python-Programm ausschließlich als Version für Python 2.x vorliegt
wenn eine benötigte Python-Bibliothek noch nicht auf Python 3 portiert ist - was aber heutzutage eher selten der Fall es.
Eine ausführliche Erläuterung zum Thema Python 3 vs. Python 2 ist auch im Python-Wiki 🇬🇧 zu finden.
2to3¶
Seit der Python Version 2.5 ist das Kommandozeilenprogramm 2to3
in der Standardinstallation von Python 2 enthalten. Mit dessen Hilfe lassen sich Python 2 Programme sehr einfach auf Python 3 Tauglichkeit testen bzw. auf Wunsch auch automatisch konvertieren.
Die Benutzung ist dabei recht simpel. Im einfachsten Fall ruft man 2to3
nur mit dem Namen eines Pythonskripts als Parameter auf:
2to3 mein_programm.py
und erhält als Ausgabe Vorschläge, was zu ändern ist, wie z.B.:
RefactoringTool: Skipping implicit fixer: buffer RefactoringTool: Skipping implicit fixer: idioms RefactoringTool: Skipping implicit fixer: set_literal RefactoringTool: Skipping implicit fixer: ws_comma RefactoringTool: Refactored test_static.py --- mein_programm.py (original) +++ mein_programm.py (refactored) @@ -3,7 +3,7 @@ from bottle import route, static_file, template, run, debug -print 'Starte Programm...' +print('Starte Programm...') @route('/test') def test():
In diesem Beispiel wird vorgeschlagen, dass man in der Zeile 3, Position 7, das print
Statement aus Python 2 durch die print-Funktion aus Python 3 ersetzen soll. Ruft man 2to3
mit der Option -w
auf, sie werden die Änderungen direkt in der Datei durchgeführt, die alte Datei wird mit der Endung .bak als Sicherung angelegt.
Weitere Hinweise zu 2to3
findet man in der Python Dokumentation 🇬🇧.
Programme erstellen¶
Um Programme mit Python zu erstellen, gibt es drei Wege, welche im Folgenden kurz besprochen werden. Dies ist die Arbeit mit
der interaktiven Pythonkonsole - der Code wird bei der Eingabe sofort ausgeführt
Editoren und Konsole - der Code wird in einem Editor erstellt und über die Konsole ausgeführt
Entwicklungsumgebungen - alle Bestandteile, um ein Programm zu erstellen, sind in einer Umgebung zusammengefasst
Die interaktive Konsole¶
Die Arbeitsweise einer Konsole ist ähnlich der Shell [3] für Linux. Sie ist vor allem zum Testen von kleineren Abschnitten des Quelltextes nützlich, da die eingegebenen Befehle sofort ausgeführt werden.
Für Einsteiger gibt es eine besonders benutzerfreundliche (bzw. einsteigerfreundliche) Variante namens bpython.
Start¶
Die interaktive Konsole wird gestartet durch [3]
python
Es erscheint zuerst eine kurze Meldung zur Python Version, dann kommt der Interaktive Prompt >>>
, wo man nun Befehle eingeben kann.
1 2 3 4 | Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> |
"Hallo Welt" in Python¶
Der Standardweg, um Python-Programme zu erstellen, geht über einen Editor. Editoren bieten viele Hilfen wie Syntaxhervorhebung, automatische Einrückung und Funktionen zu verkleinern. Daher gibt es auch eine riesige Zahl von Programmen, es kann also jeder einen Editor seiner Wahl finden.
Es wird der Quelltext im bevorzugten Editor [4] erstellt und als *.py abgespeichert.
1 2 3 | #!/usr/bin/env python # Mein Hallo-Welt-Programm fuer Python 2 print 'Hallo Welt!' |
Für Python 3 sieht das Programm minimal anders aus:
1 2 3 | #!/usr/bin/env python3 # Mein Hallo-Welt-Programm fuer Python 3 print('Hallo Welt!') |
Als Beispiel sei der Quellcode unter ~/hallowelt.py abgespeichert.
Nun öffnet man das Terminal [3] und wechselt in das Verzeichnis der Quelldatei. In diesem Ordner kann man sodann durch eine einzige Befehlszeile den Code ausführen
python hallowelt.py
Macht man die hallowelt.py Datei noch ausführbar[5], dann kann man das Programm auch per
./hallowelt.py
starten.
Nützliche Befehle¶
Um in der Konsole zu arbeiten, gibt es einige sehr hilfreiche Befehle von Python. Sie werden an einem kurzen Beispiel erklärt
>>> dir()
Es wird eine Auflistung aller der Konsole bekannten Variablen ausgegeben
>>> import os >>> help(os)
Es wird das Modul os
importiert. Somit erhält man viele Möglichkeiten, um Informationen über das System zu erhalten. Mit help(os)
wird eine kommentierte Übersicht aller im Modul enthaltenen Klassen und Methoden ausgegeben.
Anpassungen¶
Die interaktive Konsole lässt sich anpassen, indem man eine Datei verwendet, die bei jedem interaktiven Start ausgeführt wird (ähnlich zur bashrc-Datei der Bash). Dazu muss in der Shell die Umgebungsvariable PYTHONSTARTUP
auf den gewünschten Dateinamen gesetzt werden (hier .pythonrc im Homeverzeichnis): [3]
export PYTHONSTARTUP=~/.pythonrc
Damit man den export
-Befehl nicht in jeder neu geöffneten Konsole wieder manuell ausführen muss, trägt man ihn am besten am Ende der bashrc-Datei ein. [4]
Nun muss man nur noch die Datei ~/.pythonrc mit einem Editor erstellen und die gewünschten Python-Befehle eintragen. [4] Beispielsweise könnte man oft benötigte Module importieren lassen:
1 2 | import os import sys |
Code-Completion¶
Es ist sehr praktisch, auch in der interaktiven Konsole eine automatische Vervollständigung des Codes zu nutzen. Dazu wird, wie z.B. auch bei der Bash, readline genutzt. Allerdings wird in der interaktiven Python-Konsole
Tab ⇆ normalerweise für Einrückungen mit dem Tabulator-Zeichen genutzt. Für die automatische Vervollständigung ist hier das Drücken von
Esc gefolgt von
Tab ⇆ vorgesehen (genau genommen: Meta-tab
).
Man kann allerdings auch eine andere Taste bzw. Tastenkombination für die Code-Completion nutzen. Dazu bearbeitet man die in der Umgebungsvariablen PYTHONSTARTUP
angegebene Datei mit einem Editor und fügt folgendes ein: [4]
1 2 3 4 5 6 7 | try: import readline except ImportError: print("Module readline not available.") else: import rlcompleter readline.parse_and_bind("TASTE: complete") # TASTE ersetzen |
Statt TASTE
muss man dabei die gewünschte Taste bzw. Tastenkombination angeben, bspw. C-o
bzw. Control-o
für die normalerweise ungenutzte Tastenkombination
Strg +
O . Wenn man tab
für
Tab ⇆ angibt, bleibt für das echte Tabulatorzeichen trotzdem immer noch
Strg +
I .
Mehr Informationen findet man in der Manpage von readline
und der Beschreibung im Python-Tutorial 🇩🇪.
Weiterführende Literatur¶
Es gibt eine Vielzahl freier, sehr guter und im Internet verfügbarer Einführungen und Tutorials für Python. Einige davon sind unter Python#Tutorials zu finden. Allgemein empfiehlt es sich für jeden Anfänger in Python einen Blick in den offiziellen BeginnersGuide zu werfen um zu entscheiden wie er mit Python starten will.
Tutorials¶
Python 3¶
offizielles 🇬🇧 Python Tutorial
deutschsprachiges 🇩🇪 Python-Tutorial
Python 2¶
offizielles 🇬🇧 Python Tutorial
A Byte of Python 🇬🇧 sehr gute und einsteigerfreundliche Einführung in Python
A Byte of Python Deutsch 🇩🇪 A Byte of Python (Deutsche Übersetzung)
Wikibook Python unter Linux 🇩🇪 - Einführung in Python speziell unter Linux
Think Python - How to Think Like a Computer Scientist 🇬🇧 - Frei verfügbare, elektronische Vorabversion von "How to Think Like a (Python) Programmer"
Links¶
Intern¶
pep8 - Python-Code auf PEP8 Konformität testen
pip - die aktuell bevorzugte Methode, Pakete aus dem Python Package Indes zu installieren, deinstallieren und zu aktualisieren
virtualenv - mehrere (virtuelle) Python-Umgebungen parallel installieren
Bottle - WSGI-basierte Webanwendungen mit Python erstellen
couchdb-python - CouchDB Anbindung für Python
Pygame - Sammlung von Pythonmodulen zur Spieleprogrammierung
Python Setuptools - die ältere Methode, Python Pakete aus dem Python Package Index installieren
Quickly - GTK-basierte Anwendungen in Python für Ubuntu erstellen und veröffentlichen
ReportLab - PDF-Dateien aus Python-Skripten heraus erzeugen
SQLAlchemy - sehr leistungsfähig Datenbank-Anbindung und Objekt-relationaler Mapper für Python
Sphinx - System zur Generierung von (Programm-) Dokumentationen mit direkter Anbindung an Python
Extern¶
Python FAQ 🇬🇧 - Häufig gestellte Fragen und Antworten
Python-Forum 🇩🇪 - sehr gute Anlaufstelle für alle einfachen und schwierigen Probleme rund um Python
Linksammlung 🇩🇪 - zu (meist) deutschsprachigen Python-Anleitungen