zoukankan      html  css  js  c++  java
  • 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: 按钮全部勾选

    接下来我们查看演示效果

  • 相关阅读:
    faster with MyISAM tables than with InnoDB or NDB tables
    w-BIG TABLE 1-toSMALLtable @-toMEMORY
    Indexing and Hashing
    MEMORY Storage Engine MEMORY Tables TEMPORARY TABLE max_heap_table_size
    controlling the variance of request response times and not just worrying about maximizing queries per second
    Variance
    Population Mean
    12.162s 1805.867s
    situations where MyISAM will be faster than InnoDB
    1920.154s 0.309s 30817
  • 原文地址:https://www.cnblogs.com/jiakecong/p/15628555.html
Copyright © 2011-2022 走看看