跳转到主要内容

一个用于排序Python导入的Python实用工具/库。

项目描述

isort - isort your imports, so you don't have to.


PyPI version Test Status Lint Status Code coverage Status License Join the chat at https://gitter.im/timothycrosley/isort Downloads Code style: black Imports: isort DeepSource


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


让isort为你排序导入,你无需手动操作。

isort 是一个 Python 工具/库,用于按字母顺序排序导入语句,并自动按类别分隔。它提供命令行工具、Python 库以及 针对各种编辑器的插件,以快速排序所有导入语句。它需要 Python 3.8+ 运行,但支持格式化 Python 2 代码。

Example Usage

在 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”设置上方。此设置定义了导入语句在超过行长度限制时如何换行,并且有 12 种可能的设置

缩进

要更改常量缩进的外观,只需更改以下接受的格式中的缩进属性

  • 您想要的空格数。例如:4 会导致标准 4 个空格缩进。
  • 制表符
  • 一个带有引号的文本字符串。

例如

"    "

等同于 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.

这种用法的一个很好的例子是与预提交 git 钩子一起使用,例如 @acdha 提供的这个钩子。

https://gist.github.com/acdha/8717683

这有助于确保整个项目达到一定的代码质量水平。

Git 钩子

isort 提供了一个钩子函数,可以集成到您的 Git 预提交脚本中,以在提交前检查 Python 代码。

更多信息请参见这里。

Setuptools 集成

安装后,isort 将启用一个 setuptools 命令,该命令将检查项目声明的 Python 文件。

更多信息请参见这里。

传播信息

Imports: isort

将此徽章放置在您的仓库顶部,让其他人知道您的项目使用了 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?

isort 的全称是 import sort。它最初被称为 "sortImports",但我厌倦了输入额外的字符,并意识到驼峰式命名法并不符合 Python 风格。

我编写 isort 是因为在我曾经工作的一家公司中,经理有一天决定所有代码都必须有按字母顺序排序的导入语句。代码库非常大 - 他希望我们手动完成。然而,作为一名程序员 - 我太懒了,不想花8个小时无意义地执行一个功能,但又不懒于花16个小时来自动化它。我被允许开源 sortImports,于是就有了 isort :)


使用 Tidelift 订阅获取专业的 isort 支持

专业的 isort 支持作为 Tidelift 订阅 的一部分提供。Tidelift 为软件开发团队提供了一个单一的购买和维护软件的来源,同时从最了解其的专业人士那里获得专业级别的保证,并无缝集成现有工具。


谢谢,希望您觉得 isort 很有用!

~Timothy Crosley

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

isort-5.13.2.tar.gz (175.3 kB 查看散列值)

上传时间 源代码

构建分发

isort-5.13.2-py3-none-any.whl (92.3 kB 查看散列值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面