isort:基于 Python 的导入排序工具项目

A Python utility / library to sort imports.

分支16Tags163
文件最后提交记录最后更新时间
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 - 自动整理导入,解放你的双手。


PyPI 版本 Python 版本 持续集成 代码覆盖率状态 许可证 下载量 代码风格:black 导入工具:isort DeepSource


阅读最新文档 - 浏览 GitHub 代码仓库


自动整理导入,解放你的双手。

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 代码。

更多信息请点击此处。

传播消息

Imports: isort

将此徽章放在你的仓库顶部,让其他人知道你的项目使用 isort。

对于 README.md:

[![Imports: isort](https://img.shields.io/badge/imports-isort-%231674b1?style=flat&labelColor=ef8336)](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 😃


通过 Tidelift 订阅获取专业支持的 isort

isort 的专业支持可通过 Tidelift 订阅服务 获取。Tidelift 为软件开发团队提供了一个集中采购和维护软件的渠道,团队可以从最了解软件的专家那里获得专业级别的保障,同时与现有工具实现无缝集成。


感谢您的关注,希望 isort 能对您有所帮助!

~蒂莫西·克罗斯利

项目介绍

一个用于整理Python导入语句的实用工具/库。【此简介由AI生成】

定制我的领域
426.95 K687访问 GitHub