Lesen Sie die neueste Dokumentation – Durchsuchen Sie das GitHub-Code-Repository
Sortieren Sie Ihre Importe, damit Sie es nicht tun müssen.
isort ist ein Python-Dienstprogramm/eine Python-Bibliothek zum alphabetischen Sortieren von Importen und zur automatischen Trennung in Abschnitte und nach Typ. Es bietet ein Befehlszeilenprogramm, eine Python-Bibliothek und Plugins für verschiedene Editoren, um alle Ihre Importe schnell zu sortieren. Zur Ausführung ist Python 3.8+ erforderlich, es wird jedoch auch die Formatierung von Python 2-Code unterstützt.
Vor dem Isortieren:
from my_lib import Object
import os
from my_lib import Object3
from my_lib import Object2
import sys
from third_party import lib15 , lib1 , lib2 , lib3 , lib4 , lib5 , lib6 , lib7 , lib8 , lib9 , lib10 , lib11 , lib12 , lib13 , lib14
import sys
from __future__ import absolute_import
from third_party import lib3
print ( "Hey" )
print ( "yo" )
Nach isort:
from __future__ import absolute_import
import os
import sys
from third_party import ( lib1 , lib2 , lib3 , lib4 , lib5 , lib6 , lib7 , lib8 ,
lib9 , lib10 , lib11 , lib12 , lib13 , lib14 , lib15 )
from my_lib import Object , Object2 , Object3
print ( "Hey" )
print ( "yo" )
Die Installation von isort ist so einfach wie:
pip install isort
Von der Befehlszeile :
Um bestimmte Dateien auszuführen:
isort mypythonfile.py mypythonfile2.py
Rekursiv anwenden:
isort .
Wenn globstar aktiviert ist, isort .
ist äquivalent zu:
isort ** / * .py
So zeigen Sie vorgeschlagene Änderungen an, ohne sie anzuwenden:
isort mypythonfile.py --diff
Schließlich können Sie isort atomar für ein Projekt ausführen und dabei nur Änderungen anwenden, wenn diese keine Syntaxfehler verursachen:
isort --atomic .
(Hinweis: Dies ist standardmäßig deaktiviert, da es verhindert, dass isort mit Code ausgeführt wird, der mit einer anderen Python-Version geschrieben wurde.)
Aus Python heraus :
import isort
isort . file ( "pythonfile.py" )
oder:
import isort
sorted_code = isort . code ( "import b n import a n " )
Es wurden mehrere Plugins geschrieben, die die Verwendung von isort in verschiedenen Texteditoren ermöglichen. Eine vollständige Liste davon finden Sie im isort-Wiki. Darüber hinaus werde ich Pull-Requests, die Plugins für andere Texteditoren enthalten, mit Begeisterung annehmen und Dokumentation für diese hinzufügen, sobald ich benachrichtigt werde.
Sie werden oben die Einstellung „multi_line_output“ bemerken. Diese Einstellung definiert, wie From-Importe umgebrochen werden, wenn sie über das line_length-Limit hinausgehen. Es gibt 12 mögliche Einstellungen.
Um die Darstellung konstanter Einzüge zu ändern, ändern Sie einfach die Einzugseigenschaft mit den folgenden akzeptierten Formaten:
Zum Beispiel:
" "
entspricht 4.
Bei den Importstilen, die Klammern verwenden, können Sie mit der Option include_trailing_comma
(standardmäßig False
) steuern, ob nach dem letzten Import ein abschließendes Komma eingefügt werden soll oder nicht.
Ab isort 3.1.0 wurde Unterstützung für ausgewogene mehrzeilige Importe hinzugefügt. Wenn diese Option aktiviert ist, ändert isort die Importlänge dynamisch auf diejenige, die das ausgeglichenste Raster erzeugt und dabei unter der definierten maximalen Importlänge bleibt.
Beispiel:
from __future__ import ( absolute_import , division ,
print_function , unicode_literals )
Wird produziert statt:
from __future__ import ( absolute_import , division , print_function ,
unicode_literals )
Um dies zu aktivieren, setzen Sie balanced_wrapping
in Ihrer Konfiguration auf True
oder übergeben Sie die Option -e
an das Befehlszeilendienstprogramm.
isort bietet Konfigurationsoptionen, um nahezu jeden Aspekt der Organisation, Reihenfolge oder Gruppierung von Importen in Abschnitten zu ändern.
Klicken Sie hier für eine Übersicht aller dieser Optionen.
Damit isort einen einzelnen Import ignoriert, fügen Sie einfach am Ende der Importzeile einen Kommentar mit dem Text isort:skip
:
import module # isort:skip
oder:
from xyz import ( abc , # isort:skip
yo ,
hey )
Damit isort eine ganze Datei überspringt, fügen Sie einfach isort:skip_file
zur Dokumentzeichenfolge des Moduls hinzu:
""" my_module.py
Best module ever
isort:skip_file
"""
import b
import a
isort kann ausgeführt oder konfiguriert werden, um Importe automatisch hinzuzufügen/zu entfernen.
Eine vollständige Anleitung finden Sie hier.
--check-only
isort kann auch verwendet werden, um zu überprüfen, ob der Code korrekt formatiert ist, indem er mit -c
ausgeführt wird. Alle Dateien, die falsch sortierte und/oder formatierte Importe enthalten, werden nach stderr
ausgegeben.
isort ** / * .py -c -v
SUCCESS: /home/timothy/Projects/Open_Source/isort/isort_kate_plugin.py Everything Looks Good !
ERROR: /home/timothy/Projects/Open_Source/isort/isort/isort.py Imports are incorrectly sorted.
Ein großartiger Ort, an dem dies verwendet werden kann, ist ein Pre-Commit-Git-Hook, wie dieser von @acdha:
https://gist.github.com/acdha/8717683
Dies kann dazu beitragen, während eines Projekts ein bestimmtes Maß an Codequalität sicherzustellen.
isort bietet eine Hook-Funktion, die in Ihr Git-Pre-Commit-Skript integriert werden kann, um Python-Code vor dem Commit zu überprüfen.
Weitere Infos hier.
Bei der Installation aktiviert isort einen setuptools
-Befehl, der die von Ihrem Projekt deklarierten Python-Dateien überprüft.
Weitere Infos hier.
Platzieren Sie dieses Abzeichen oben in Ihrem Repository, um andere darüber zu informieren, dass Ihr Projekt isort verwendet.
Für README.md:
[ ![ Imports: isort ] ( https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 )] ( https://pycqa.github.io/isort/ )
Oder README.rst:
.. image :: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
Um eine Sicherheitslücke zu melden, wenden Sie sich bitte an den Sicherheitskontakt von Tidelift. Tidelift wird die Behebung und Offenlegung koordinieren.
isort steht einfach für Importsort. Es hieß ursprünglich „sortImports“, aber ich hatte es satt, die zusätzlichen Zeichen einzugeben, und kam zu der Erkenntnis, dass camelCase nicht pythonisch ist.
Ich habe isort geschrieben, weil in einer Organisation, in der ich früher gearbeitet habe, eines Tages der Manager kam und entschied, dass der gesamte Code alphabetisch sortierte Importe haben muss. Die Codebasis war riesig – und er wollte, dass wir sie von Hand erstellen. Allerdings bin ich als Programmierer zu faul, 8 Stunden gedankenlos eine Funktion auszuführen, aber nicht zu faul, 16 Stunden damit zu verbringen, sie zu automatisieren. Mir wurde die Erlaubnis erteilt, sortImports als Open Source zu öffnen, und hier sind wir :)
Erhalten Sie mit dem Tidelift-Abonnement professionellen Support
Professioneller Support für isort ist im Rahmen des Tidelift-Abonnements verfügbar. Tidelift bietet Softwareentwicklungsteams eine einzige Quelle für den Kauf und die Wartung ihrer Software, mit professionellen Garantien von den Experten, die sich am besten auskennen, und ermöglicht gleichzeitig eine nahtlose Integration mit vorhandenen Tools.
Vielen Dank und ich hoffe, Sie finden isort nützlich!
~Timothy Crosley