一个用于排序Python导入的Python实用工具/库。
项目描述
让isort为你排序导入,你无需手动操作。
isort 是一个 Python 工具/库,用于按字母顺序排序导入语句,并自动按类别分隔。它提供命令行工具、Python 库以及 针对各种编辑器的插件,以快速排序所有导入语句。它需要 Python 3.8+ 运行,但支持格式化 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”设置上方。此设置定义了导入语句在超过行长度限制时如何换行,并且有 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 文件。
传播信息
将此徽章放置在您的仓库顶部,让其他人知道您的项目使用了 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 :)
专业的 isort 支持作为 Tidelift 订阅 的一部分提供。Tidelift 为软件开发团队提供了一个单一的购买和维护软件的来源,同时从最了解其的专业人士那里获得专业级别的保证,并无缝集成现有工具。
谢谢,希望您觉得 isort 很有用!
~Timothy Crosley
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
isort-5.13.2.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109 |
|
MD5 | a4d791bf2a42d1fbaeb1f5cb2c9147b2 |
|
BLAKE2b-256 | 87f9c1eb8635a24e87ade2efce21e3ce8cd6b8630bb685ddc9cdaca1349b2eb5 |
isort-5.13.2-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6 |
|
MD5 | 0793de0d0994e53cb3bcf057433f7dc8 |
|
BLAKE2b-256 | d1b38def84f539e7d2289a02f0524b944b15d7c75dab7628bedf1c4f0992029c |