A Python utility / library to sort imports.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 5 年前 | ||
| 2 个月前 | ||
| 6 个月前 | ||
| 11 个月前 | ||
| 11 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 6 年前 | ||
| 3 年前 | ||
| 6 年前 | ||
| 6 年前 | ||
| 4 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 5 个月前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 7 年前 | ||
| 4 个月前 | ||
| 10 年前 | ||
| 12 年前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |
自动整理导入,解放你的双手。
isort 是一款 Python 工具/库,用于按字母顺序对导入语句进行排序,并自动按类型将其分组成不同的部分。它提供了命令行工具、Python 库以及适用于多种编辑器的插件,帮助你快速整理所有导入语句。运行 isort 需要 Python 3.10 或更高版本,但它也支持格式化 Python 2 代码。

使用 isort 之前:
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")
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")
安装 isort
安装 isort 非常简单,只需执行以下命令:
pip install isort
使用 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\nimport a\n")
为您偏好的文本编辑器安装 isort
目前已有多个插件可让您在各种文本编辑器中使用 isort。您可以在 isort 维基 上找到完整的插件列表。 此外,我非常欢迎包含其他文本编辑器插件的拉取请求,并会在收到通知后为其添加文档。
多行输出模式
您会注意到上面的“multi_line_output”设置。此设置定义了当 from 导入超过 line_length 限制时如何换行,并且有 12 种可能的设置。
缩进
要更改常量缩进的显示方式,只需使用以下可接受的格式更改 indent 属性:
- 您想要的空格数。例如:4 将产生标准的 4 空格缩进。
- Tab
- 带引号的逐字字符串。
例如:
" "
is equivalent to 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 可以运行或配置为自动添加/移除导入。
使用 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.
这个功能的一个绝佳应用场景是搭配 pre-commit git 钩子使用,例如 @acdha 提供的这个钩子:
https://gist.github.com/acdha/8717683
这有助于确保整个项目的代码质量达到一定水平。
Git 钩子
isort 提供了一个钩子函数,可以集成到你的 Git pre-commit 脚本中,在提交前检查 Python 代码。
传播消息
将此徽章放在你的仓库顶部,让其他人知道你的项目使用 isort。
对于 README.md:
[](https://isort.readthedocs.io/)
或者 README.rst:
.. image:: https://img.shields.io/badge/imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://isort.readthedocs.io/
安全联系信息
如要报告安全漏洞,请使用 Tidelift 安全联系渠道。Tidelift 将协调漏洞的修复与披露工作。
为什么选择 isort?
isort 其实就是“import sort”的缩写。它最初名为“sortImports”,但我厌倦了输入额外的字符,并且意识到 camelCase 并不符合 Python 的风格。
我开发 isort 的契机是这样的:在我曾经工作过的一家公司,有一天经理突然决定,所有代码中的导入语句都必须按字母顺序排序。当时的代码库规模庞大,而他的意思是让我们手动完成这项工作。不过,作为一名程序员,我懒于花 8 小时去机械地执行一项任务,却不介意花 16 小时来自动化它。后来我获得了开源 sortImports 的许可,于是便有了今天的 isort 😃
isort 的专业支持可通过 Tidelift 订阅服务 获取。Tidelift 为软件开发团队提供了一个集中采购和维护软件的渠道,团队可以从最了解软件的专家那里获得专业级别的保障,同时与现有工具实现无缝集成。
感谢您的关注,希望 isort 能对您有所帮助!
~蒂莫西·克罗斯利
项目介绍
一个用于整理Python导入语句的实用工具/库。【此简介由AI生成】
