阅读最新文档 - 浏览 GitHub 代码存储库
对您的进口进行分类,这样您就不必这样做。
isort 是一个 Python 实用程序/库,用于按字母顺序对导入进行排序,并按类型自动分成部分。它为各种编辑器提供命令行实用程序、Python 库和插件,以快速对所有导入进行排序。它需要 Python 3.8+ 才能运行,但也支持格式化 Python 2 代码。
排序前:
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" )
排序后:
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" )
安装 isort 非常简单:
pip install isort
从命令行:
要在特定文件上运行:
isort mypythonfile.py mypythonfile2.py
递归应用:
isort .
如果启用了 globstar, isort .
相当于:
isort ** / * .py
要查看建议的更改而不应用它们:
isort mypythonfile.py --diff
最后,要对项目自动运行 isort,仅在不引入语法错误的情况下应用更改:
isort --atomic .
(注意:默认情况下禁用此功能,因为它会阻止 isort 针对使用不同版本的 Python 编写的代码运行。)
从 Python 内部:
import isort
isort . file ( "pythonfile.py" )
或者:
import isort
sorted_code = isort . code ( "import b n import a n " )
已经编写了几个插件,可以在各种文本编辑器中使用 isort。您可以在 isort wiki 上找到它们的完整列表。此外,我将热情地接受包括其他文本编辑器插件的拉取请求,并在收到通知后为其添加文档。
您会注意到上面的“multi_line_output”设置。此设置定义了 from 导入超出 line_length 限制时如何换行,并且有 12 个可能的设置。
要更改常量缩进的显示方式 - 只需使用以下可接受的格式更改缩进属性:
例如:
" "
相当于4。
对于使用括号的导入样式,您可以使用include_trailing_comma
选项(默认为False
)控制是否在上次导入后包含尾随逗号。
从 isort 3.1.0 开始,添加了对平衡多行导入的支持。启用此功能后,isort 将动态地将导入长度更改为产生最平衡网格的长度,同时保持低于定义的最大导入长度。
例子:
from __future__ import ( absolute_import , division ,
print_function , unicode_literals )
将生成而不是:
from __future__ import ( absolute_import , division , print_function ,
unicode_literals )
要启用此功能,请在配置中将balanced_wrapping
设置为True
或将-e
选项传递到命令行实用程序中。
isort 提供的配置选项几乎可以改变导入的组织、排序或分组方式的各个方面。
单击此处查看所有这些选项的概述。
要使 isort 忽略单个导入,只需在包含文本isort:skip
导入行末尾添加注释:
import module # isort:skip
或者:
from xyz import ( abc , # isort:skip
yo ,
hey )
要使 isort 跳过整个文件,只需将isort:skip_file
添加到模块的文档字符串中:
""" my_module.py
Best module ever
isort:skip_file
"""
import b
import a
isort 可以运行或配置为自动添加/删除导入。
请参阅此处的完整指南。
--check-only
选项isort 还可用于通过使用-c
运行代码来验证代码格式是否正确。任何包含错误排序和/或格式导入的文件都将输出到stderr
。
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.
可以使用此功能的一个很好的地方是使用预提交 git hook,例如 @acdha 的这个:
https://gist.github.com/acdha/8717683
这有助于确保整个项目的代码质量达到一定水平。
isort 提供了一个钩子函数,可以集成到您的 Git 预提交脚本中,以便在提交之前检查 Python 代码。
更多信息请点击这里。
安装后,isort 启用setuptools
命令来检查项目声明的 Python 文件。
更多信息请点击这里。
将此徽章放在存储库的顶部,让其他人知道您的项目使用 isort。
对于 README.md:
[ ![ Imports: isort ] ( https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 )] ( https://pycqa.github.io/isort/ )
或者 README.rst:
.. image :: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
要报告安全漏洞,请使用 Tidelift 安全联系人。 Tidelift 将协调修复和披露。
isort 只是代表导入排序。它最初被称为“sortImports”,但是我厌倦了输入额外的字符,并意识到camelCase不是Pythonic。
我编写 isort 是因为在我曾经工作过的一个组织中,有一天经理进来并决定所有代码都必须按字母顺序排序导入。代码库非常庞大——他想让我们手工完成。然而,作为一名程序员,我懒得花 8 个小时漫无目的地执行一个功能,但又不太懒得花 16 个小时来自动化它。我获得了开源 sortImports 的许可,我们就在这里:)
通过 Tidelift 订阅获得专业支持
Tidelift 订阅中提供对 isort 的专业支持。 Tidelift 为软件开发团队提供了购买和维护软件的单一来源,并由最了解软件的专家提供专业级保证,同时与现有工具无缝集成。
谢谢,我希望你发现这很有用!
〜蒂莫西·克罗斯利