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
对于正式使用isort和black的项目,建议在项目存储库根目录下的配置文件中设置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 配置为 PyCharm 的 external 工具,以便在代码开发时随时格式化导入排序
过程有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
- 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
- Arguments: --profile black $FilePath$
- Working directory: $ProjectFileDir$
- In Advanced Options: 按钮全部勾选

接下来我们查看演示效果

Django(76)isort工具对import导入进行排序的更多相关文章
- Django admin 管理工具
admin 组件的使用 Django 提供了基于 web 的管理工具.Django 自动管理工具是 django.contrib 的一部分. INSTALLED_APPS = [ 'django.co ...
- Django——admin管理工具
一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...
- python学习第五讲,python基础语法之函数语法,与Import导入模块.
目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...
- sqoop工具从oracle导入数据2
sqoop工具从oracle导入数据 sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive.hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入 ...
- 网易UI自动化测试工具Airtest中导入air文件中的方法
最近看了一下网易的Airtest ,UI测试工具,写了一些后在导入其他air文件中的.py文件,卡了一下,现在博客中纪录一下导入其他air文件的方式: 在Airtest 测试工具中,导入其他air文件 ...
- 吴裕雄--天生自然Django框架开发笔记:Django Admin 管理工具
Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: ...
- link和@import导入css文件的区别
(二者的区别其实是基础问题,但由于本人经常会忽略掉使用@import导入css文件这种方式,所以记录下来增加印象^^) 首先二者的引入方式: link:<link rel="style ...
- @import导入外部样式表与link链入外部样式表的区别
昨天碰到同事问了一个问题,@impor导入外部样式与link链入外部样式的优先级是怎样的,为什么实验的结果是按照样式表导入后的位置来决定优先级. 今天就这个问题,度娘上找了很久,终于有个总结性的答案出 ...
- jsp中@import导入外部样式表与link链入外部样式表的区别
昨天碰到同事问了一个问题,@impor导入外部样式与link链入外部样式的优先级是怎样的,为什么实验的结果是按照样式表导入后的位置来决定优先级.今天就这个问题具体总结如下: 先解释一下网页添加cs ...
随机推荐
- Java:NIO 学习笔记-1
Java:NIO 学习笔记-1 说明:本笔记是根据bilibili上 尚硅谷 的课程 NIO视频 而做的笔记 主要内容 Java NIO 简介 Java NIO 与 IO 的主要区别 缓冲区(Buff ...
- 计算机网络:HTTP
计算机网络基础:HTTP 先验知识 HTTP和其他协议的关系 通过下图,了解IP协议,TCP协议,DNS服务在使用HTTP协议通信过程中各自发挥的作用: 服务器处理流程 接受客户端连接 ------& ...
- 2021.8.13考试总结[NOIP模拟38]
T1 a 入阵曲.枚举矩形上下界,之后从左到右扫一遍.用树状数组维护前缀和加特判可以$A$,更保险要脸的做法是双指针扫,因为前缀和单调不减. $code:$ 1 #include<bits/st ...
- mipi csi接口,1条lane支持多少像素,200w像素需要几条lane,为什么,怎么计算出来的?谢谢!
按帧频FRAME=60HZ, 分辨率480*800来计算;以WVGA 显示分辨率,24BIT图片,60幁为例,在理想状态下(未包含RGB信号前后肩宽度),总传输速率最小为:480*800*8BIT*3 ...
- Qt char * 转QString
1.QString转char * 先将QString转换为QByteArray,再将QByteArray转换为char *. 注意:不能用char *mm = str.toLatin1().data( ...
- POJ 2446 Chessboard(二分图最大匹配)
题意: M*N的棋盘,规定其中有K个格子不能放任何东西.(即不能被覆盖) 每一张牌的形状都是1*2,问这个棋盘能否被牌完全覆盖(K个格子除外) 思路: M.N很小,把每一个可以覆盖的格子都离散成一个个 ...
- H3C 三层交换基于IP限速
一.背景 目前百度爬虫爬取业务总是按照自己的性能进行抓取客户数据,从来不考虑客户端的网络承受能力,导致客户端网络带宽超出预算范围,因此在客户端方面针对百度的无限制抓取采取相应的策略. 二.解决方案: ...
- WPF_05_路由事件
路由事件 WPF用更高级的路由事件替换普通的.NET事件.路由事件具有更强传播能力,可在元素树中向上冒泡和向下隧道传播,并沿着传播路径被事件处理程序处理.与依赖属性一样,路由事件由只读的静态字段表示, ...
- RabbitMQ多消费者顺序性消费消息实现
最近起了个项目消息中心,用来中转各个系统中产生的消息,用到的是RabbitMQ,由于UAT环境.生产环境每台消费者服务都是多台,有些消息要求按顺序消费,所以需要采取一定的措施保证消息的顺序消费,下面讲 ...
- 启用MFA的office 365 账号如何连接Exchange online
第一篇随手笔记,从简单开始... 如何使用Exchange Online PowerShell呢? 以Windows操作系统为例,如Windows10:首先需要安装Exchange Online Po ...