PEP8 schlägt vor, dass:
Importe sollten in der folgenden Reihenfolge gruppiert werden:
- Standardbibliotheksimporte
- verwandte Importe von Dritten
- lokale anwendungs- / bibliotheksspezifische Importe
Sie sollten zwischen jeder Gruppe von Importen eine Leerzeile einfügen.
Gibt es eine Möglichkeit zu überprüfen , ob der Standard überall im Paket verletzt wird mit statischem Code - Analyse - Tool, wie pylint
, pyflakes
, pychecker
, pep8
?
Beispiel für einen Verstoß:
from my_package import my_module
from django.db import models
import os
Richtige Art zu importieren:
import os
from django.db import models
from my_package import my_module
python
python-import
static-analysis
pep8
Alecxe
quelle
quelle
pep8
Tool überprüft dies derzeit nicht - es prüft nur auf mehrere Importe in einer Zeile (E401)Antworten:
Die aktuelle Version von pylint führt dies jetzt aus und meldet es als Fehlerklasse C0411.
quelle
wrong-import-order
.Update (2016): sbywater hat die neueste Antwort.
Fand es! (versehentlich beim Lesen von "Hacker's Guide to Python")
Das OpenStack Hacking Style Checks- Projekt mit dem Namen Hacking führt mehrere einzigartige
flake8
Erweiterungen ein. Unter ihnen befinden sich hacking_import_groups (zugehöriges Commit ).Beispiel:
Anforderungen
Hacking (aus dem Master-Zweig):
im Beispiel verwendete Dateien
tox.ini
(Wir müssen flake8 mitteilen, dass wir einen benutzerdefinierten Check verwenden möchten.)UPD: Nachdem die neueste Version des
hacking
Pfads zur Prüfung geändert wurde, ist dies jetzt der Fallhacking.checks.imports.hacking_import_groups
.test.py
(Ziel des Schecks)my_module.py
(lokaler Import vontest.py
)Wenn ich dann
flake8
gegentest.py
:Wenn ich dann die Importe in der richtigen Reihenfolge gruppiere, folgt
PEP8
:Keine Warnungen gefunden:
Hoffe das wird jemandem in Zukunft helfen.
quelle
Besuchen Sie https://pypi.python.org/pypi/isort oder https://github.com/timothycrosley/isort
https://pypi.python.org/pypi/flake8-isort verbindet diese Funktionalität mit flake8
quelle
isort script_name.py --check-only
nur nach unsortierten Importen suchen und die Ergebnisse ausdrucken muss. Vielen Dank für die Option.isort -rc --check --diff
Überprüfen Sie alle Dateien rekursiv, nur überprüfen Sie, zeigen Sie einenEin
flake8
Plugin existiert: flake8-import-order .quelle