头图

大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。

更多Python学习内容:http://ipengtao.com

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

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


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

安装

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

使用 pip 安装

可以通过 pip 直接安装 isort

pip install isort

特性

  1. 自动排序:根据配置文件或默认规则自动排序导入语句。
  2. 配置灵活:支持多种配置方式,可以通过配置文件、命令行参数或代码注释来定制导入排序规则。
  3. 集成工具:可以与 pylintflake8 等代码检查工具集成,提供一致的代码风格检查和修复。
  4. 命令行工具:提供强大的命令行接口,方便快速整理导入语句。
  5. API 支持:提供 Python API,可在代码中灵活使用。

基本功能

自动排序导入语句

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

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

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

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

isort my_script.py

检查导入排序

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

isort --check-only my_script.py

显示排序差异

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

isort --diff my_script.py

高级功能

配置文件

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

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

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

分组和排序规则

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

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

集成代码检查工具

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

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

在命令行中运行 flake8isort 进行检查:

flake8 .
isort --check-only .

使用 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)

实际应用场景

代码格式化工具链

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

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

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

预提交钩子

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

# .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

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 .

总结

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


涛哥聊Python
59 声望39 粉丝