python | isort,一个有趣的 自动整理导入语句 的Python 库!

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。

原文链接:isort,一个有趣的 Python 库!

大家好,今天为大家分享一个有趣的 Python 库 - isort。

Github地址:https://github.com/PyCQA/isort

在 Python 编程中,代码的可读性和维护性非常重要。良好的代码风格不仅能提升代码的可读性,还能减少错误的发生。模块导入顺序的规范是 Python 代码风格的重要部分,但手动整理导入顺序可能会很繁琐。isort 库是一个用于自动排序和整理 Python 导入语句的工具,能够根据配置文件或默认规则自动调整导入顺序,使代码更加整洁和符合 PEP 8 标准。本文将详细介绍 isort 库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。

1 安装

要使用 isort 库,首先需要安装它。以下是安装步骤:

使用 pip 安装

可以通过 pip 直接安装 isort

pip install isort

2 特性

  1. 自动排序:根据配置文件或默认规则自动排序导入语句。

  2. 配置灵活:支持多种配置方式,可以通过配置文件、命令行参数或代码注释来定制导入排序规则。

  3. 集成工具:可以与 pylintflake8 等代码检查工具集成,提供一致的代码风格检查和修复。

  4. 命令行工具:提供强大的命令行接口,方便快速整理导入语句。

  5. API 支持:提供 Python API,可在代码中灵活使用。

3 基本功能

3.1 自动排序导入语句

使用 isort 可以自动排序导入语句,以下是一个示例:

# 原始代码
import os
import sys
import re
import json

# 排序后
import json
import os
import re
import sys

在命令行中运行 isort 来整理导入语句:

isort my_script.py

3.2 检查导入排序

可以使用 isort 检查代码中的导入语句是否已排序:

isort --check-only my_script.py

3.3 显示排序差异

isort 支持显示排序前后的差异,方便查看修改内容:

isort --diff my_script.py

4 高级功能

4.1 配置文件

isort 支持多种配置文件,可以在项目根目录创建 .isort.cfgpyproject.toml 或 setup.cfg 文件进行配置。

以下是一个 .isort.cfg 文件的示例:

[settings]
profile = black
line_length = 88
multi_line_output = 3
include_trailing_comma = true
known_third_party = flask, requests

4.2 分组和排序规则

isort 支持自定义导入分组和排序规则,以下是一个示例:

[settings]
known_first_party = my_project
known_third_party = flask, requests
sections = FUTURE, STDLIB, THIRDPARTY, FIRSTPARTY, LOCALFOLDER
default_section = THIRDPARTY

4.3 集成代码检查工具

isort 可以与 pylintflake8 等代码检查工具集成,以下是与 flake8 集成的示例:

# .flake8 配置文件
[flake8]
extend-ignore = E203
max-line-length = 88

在命令行中运行 flake8 和 isort 进行检查:

flake8 .
isort --check-only .

4.4 使用 Python API

除了命令行工具,isort 还提供了 Python API,可以在代码中灵活使用。以下是一个使用 Python API 整理导入语句的示例:

import isort

# 原始代码
code = """
import os
import sys
import re
import json
"""

# 排序导入语句
sorted_code = isort.code(code)

print(sorted_code)

5 实际应用场景

5.1 代码格式化工具链

在团队开发中,使用 isort 与 black 等代码格式化工具集成,确保代码风格一致。

# 使用 black 格式化代码
black my_project/

# 使用 isort 整理导入语句
isort my_project/

5.2 预提交钩子

在项目中使用预提交钩子,在代码提交前自动整理导入语句。

# .pre-commit-config.yaml 文件
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v3.4.0
  hooks:
  - id: trailing-whitespace
  - id: end-of-file-fixer

- repo: https://github.com/pre-commit/mirrors-isort
  rev: v5.9.3
  hooks:
  - id: isort

在命令行中安装预提交钩子:

pre-commit install

5.3 CI/CD 管道

在 CI/CD 管道中集成 isort,确保每次构建时自动检查导入排序。

# .github/workflows/ci.yml 文件
name: CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.8'
    - name: Install dependencies
      run: |
        pip install isort
    - name: Check import sorting
      run: |
        isort --check-only .

6 总结

isort 库是一个功能强大且易于使用的工具,能够帮助开发者自动整理 Python 代码中的导入语句。通过支持自动排序、灵活配置、与代码检查工具集成和命令行工具,isort 提供了强大的功能和灵活的扩展能力。本文详细介绍了 isort 库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 isort 库的使用,并在实际项目中发挥其优势。无论是在代码格式化工具链、预提交钩子还是 CI/CD 管道中,isort 库都将是一个得力的工具。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值