Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
PEP 8 ist der "Style Guide for Python Code", also die Richtlinie zum Formatieren von Python-Code, an die sich quasi jeder Python-Programmierer hält.
Das gleichnamige Programm pep8 kann den eigenen Programmcode auf Konformität mit PEP 8 untersuchen und vorhandene Fehler direkt anzeigen.
Da PEP 8 gleichermaßen für alle Python-Version gilt, ist normalerweise die parallele Installation beider Pakete nicht notwendig. Da das Paket pep8 direkt eine Kommandozeilen-Version des Programms installiert, ist dieses Paket zu bevorzugen.
Das Programm kann über die Paketquellen installiert werden [1]:
pep8
mit apturl
Paketliste zum Kopieren:
sudo apt-get install pep8
sudo aptitude install pep8
Ab Ubuntu 14.04 lautet der Name für das entsprechende Python-3-Modul:
python3-pep8
mit apturl
Paketliste zum Kopieren:
sudo apt-get install python3-pep8
sudo aptitude install python3-pep8
Wie unter Python üblich, kann man sich die aktuellste Version von pep8 auch mit Hilfe von pip aus dem Python Package Index installieren.
pep8 wird über die Kommandozeile genutzt, sofern man das Programm über das Paket pep8 installiert hat. Die allgemeine Syntax lautet[2]:
pep OPTION DATEI(EN)
Optionen von pep8 | |
Option | Erklärung |
--show-source | Zeigt den Quellcode, welcher den Fehler enthält, mit an. |
--show-pep8 | Zeigt den den Fehler betreffenden Abschnitt aus der PEP 8 mit an. (Hinweis: dadurch kann die Ausgabe sehr lang werden) |
--exclude=DATEIEN | Ignoriert die Datei(en) DATEIEN bei der Prüfung. Mehrere Dateien können durch ein Komma , getrennt werden, Wildcards und Joker können auch eingesetzt werden (z.B. *.html ). |
--filename=DATEIEN | Es werden nur die Datei(en) DATEIEN geprüft. Diese Option bewirkt kann das Gegenteil zu --exclude . |
--ignore=FEHLER | Es werden keine Meldungen zum Fehlertyp FEHLER angezeigt. Mehrere Fehlertypen können durch ein Komma , getrennt angegeben werden. |
--select=FEHLER | Es werden nur Fehler vom Fehlertyp FEHLER angezeigt. Diese Option ist genau Gegenteil von --ignore . |
-h | Zeigt die Hilfe zu pep8 an. |
Wenn pep8 über pip
installiert wird, wird keine Man-Page angelegt. Der Aufruf von
pep8 -h
zeigt aber die vollständige Hilfe an.
Das folgende, kurze (und nicht weiter sinnvolle) Code-Beispiel ist an einigen Stellen nicht PEP-8-konform:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # -*- coding: utf-8 -*- import os, datetime class MyClass(object): def __init__(self): self.my_dict = {'mykey':'ein Wert'} def My_method(self): if self.my_dict.has_key('mykey'): print '''Das Dictionary my_Dict enthält einen Schlüssel mit dem Namen {0}, {1}'''.format( self.my_dict['mykey'],'toll, oder?') print datetime.datetime.today() if __name__=='__main__': my_class = MyClass() my_class.My_method() |
Speichert man die Datei z.B. unter dem Namen pep8_test.py ab und lässt mit dem Aufruf von
pep8 pep8_test.py
den Konformitätstest darüber laufen, erhält man folgende Ausgabe, die die Fehler auslistet:
pep8_test.py:3:10: E401 multiple imports on one line pep8_test.py:5:1: E302 expected 2 blank lines, found 1 pep8_test.py:7:32: E231 missing whitespace after ':' pep8_test.py:8:1: W293 blank line contains whitespace pep8_test.py:10:24: W601 .has_key() is deprecated, use 'in' pep8_test.py:11:80: E501 line too long (99 > 79 characters) pep8_test.py:12:16: E121 continuation line indentation is not a multiple of four pep8_test.py:12:37: E231 missing whitespace after ',' pep8_test.py:16:12: E225 missing whitespace around operator
Den Fehler Typ "W293" in der Zeile 8 sieht man übrigens im obigen Listing nicht - hier werden überflüssigen Leerzeichen in einer sonst leeren Zeile bemängelt.
Der Aufruf von:
pep8 pep8_test.py --statistics
zeigt, zusätzlich zur obigen Ausgabe, noch eine Fehlerstatistik an:
... 1 E121 continuation line indentation is not a multiple of four 1 E225 missing whitespace around operator 2 E231 missing whitespace after ':' 1 E302 expected 2 blank lines, found 1 1 E401 multiple imports on one line 1 E501 line too long (99 > 79 characters) 1 W293 blank line contains whitespace 1 W601 .has_key() is deprecated, use 'in'
Hier tritt also jeder Fehler nur ein- oder zweimal auf.
Der folgende Befehl weist pep8 an, die Fehler E501 (= Zeile länger als 79 Zeichen) und W292 (Leerzeile enthält Leerzeichen) zu ignorieren. Entsprechend kürzer ist die Liste der Fehler:
pep8 pep8_test.py --ignore=E501,W292
pep8_test.py:3:10: E401 multiple imports on one line pep8_test.py:5:1: E302 expected 2 blank lines, found 1 pep8_test.py:7:32: E231 missing whitespace after ':' pep8_test.py:8:1: W293 blank line contains whitespace pep8_test.py:10:24: W601 .has_key() is deprecated, use 'in' pep8_test.py:12:16: E121 continuation line indentation is not a multiple of four pep8_test.py:12:37: E231 missing whitespace after ',' pep8_test.py:16:12: E225 missing whitespace around operator
Der folgende Befehl veranlasst pep8 dazu, alle Dateien im Verzeichnis trunk (und dessen Unterverzeichnissen) zu prüfen, dabei aber alle Dateien mit der Endung tmpl sowie die Datei jsontemplate.py zu ignorieren:
pep8 trunk --exclude=*.tmpl,jsontemplate.py
Wer das Paket python3-pep8 installiert hat, der kann pep8
nicht direkt aufrufen. Der Aufruf erfolgt wie folgt:
python3 -m pep8 OPTIONEN DATEI
Ansonsten ist die Benutzung identisch mit der oben beschriebenen.
Diese Revision wurde am 22. Dezember 2016 16:43 von aasche erstellt.