• Django(76)isort工具对import导入进行排序


    前言

    我们在开发项目时经常会进行导包有import *格式的,还有from * import *格式的,最后就会显示的很乱,那么有没有什么工具能对导包进行一键排序呢?答案是有的,使用isort工具
     

    isort介绍

    isort 是一个 Python 实用库,用于按字母顺序对imports导入进行排序,并自动分为部分和类型。它为各种编辑器提供命令行实用程序、Python库和插件,以快速对所有导入进行排序。它需要 Python 3.6+ 才能运行,但也支持格式化 Python 2 代码。
     

    作用展示

    下面有一段比较混乱的代码如下:

    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")
    

    安装命令

    最普通的方式

    pip install isort
    

    安装支持requirements.txt的方式

    pip install isort[requirements_deprecated_finder]
    

    安装支持Pipfile的方式

    pip install isort[pipfile_deprecated_finder]
    

    安装支持以上2种根式的方式

    pip install isort[requirements_deprecated_finder,pipfile_deprecated_finder]
    

    使用poetry的安装方式

    poetry add isort
    

    配置信息

    isort有许多配置信息,这里我们围绕与black包(代码格式化的第三方包)的配合
     

    Black Compatibility

    大多数情况下isort都是与black配合使用,我们只需将isort配置中的profile设置为black
     
    对于正式使用isortblack的项目,建议在项目存储库根目录下的配置文件中设置black配置文件。这样,它独立于用户如何调用isort(预提交、CLI或编辑器集成),black配置文件将自动应用。
     
    例如,您的pyproject.toml文件如下所示

    [tool.isort]
    profile = "black"
    

    Config Files

    isort支持各种标准配置格式,以允许将自定义快速集成到任何项目中。
     
    pyproject.toml [preferred format]

    [tool.isort]
    profile = "hug"
    src_paths = ["isort", "test"]
    

    实战项目配置

    演示项目以poetry配置为例子
     

    1.使用poetry安装

    poetry add isort
    

    2.在pyproject.toml中添加如下配置

    [tool.isort]
    profile = "black"
    skip = ["migrations"]
    

    因为是使用Django框架,所以我们需要跳过migrations目录
     

    3.将 isort 配置为 PyCharmexternal 工具,以便在代码开发时随时格式化导入排序
    过程有2步,
    1.配置File Watchers,为了每个文件保存时运行isort
    2.配置external tools

    • 确保已安装File Watchers插件
    • 打开Preferences or Settings -> Tools -> File Watchers,点击+按钮,创建一个新的watcher
      • Name: isort
      • File Type: Python
      • Scope: Project Files
      • Program: $PyInterpreterDirectory$/isort 注意:此示例使用的虚拟环境,如果你没有使用虚拟环境,可通过which isort查找到路径并填写真实的路径
      • Arguments: --profile black $FilePath$
      • Output paths to refresh: $FilePath$
      • Working directory: $ProjectFileDir$
      • In Advanced Options
        • 取消勾选 "Auto-save edited files to trigger the watcher"
        • 取消勾选 "Trigger the watcher on external changes"
    • 打开Preferences or Settings -> Tools -> External Tools,点击+按钮,创建一个新的tools
      • Name: isort
      • Description: Sort imports in current file
      • Program: $PyInterpreterDirectory$/isort 注意:此示例使用的虚拟环境,如果你没有使用虚拟环境,可通过which isort查找到路径并填写真实的路径
      • Arguments: --profile black $FilePath$
      • Working directory: $ProjectFileDir$
      • In Advanced Options: 按钮全部勾选

    接下来我们查看演示效果

  • 相关阅读:
    Educational Codeforces Round 64(ECR64)
    [网络流]BZOJ4657 tower 最小割约束
    009:JSON
    008:数据类型
    007:MySQL SSL
    006:多实例安装
    005: 存储引擎介绍
    004:MySQL数据库体系结构
    003:MySQL账号创建授权以及Workbench
    002:MySQL升级以及访问连接
  • 原文地址:https://www.cnblogs.com/jiakecong/p/15628555.html
Copyright © 2020-2023  润新知