python - 在python中对导入语句进行分组
问题描述
我最近开始学习 python 并在我的 python 文件上运行 pylint。我收到以下评论。
from os import listdir
from os.path import isfile, join
我上面两行,Pylinter 注释是
C: 5, 0: Imports from package os are not grouped (ungrouped-imports)
我怎样才能做到这一点?
另一条评论在下面一行
import mimetypes, time, csv, platform, base64, django, sys, os, math, uuid, linecache, logging, requests
C: 5, 0: standard import "import mimetypes, time, csv, platform, base64, django, sys, os, math, uuid, linecache, logging, requests" should be placed before "import mimetypes, time, csv, platform, base64, django, sys, os, math, uuid, linecache, logging, requests" (wrong-import-order)
上述行是什么意思,为什么需要它?
解决方案
PEP8建议对导入进行排序和分组,如下所示:
进口应按以下顺序分组:
标准库导入。
相关第三方进口。
本地应用程序/库特定的导入。
您应该在每组导入之间放置一个空行。
在你的情况下, django 和 requests 是第三方进口,所以你应该写
import mimetypes, time, csv, platform, base64, sys, os, math, uuid, linecache, logging
import django, requests
当您有这么多时,按字母顺序排列导入(在每个组中)可能会更加有用。
此外,pylint 似乎喜欢 PEP8 之外的分组。特别是,来自同一模块/包的导入应该组合在一起。也就是说,在您的os
导入和其余部分之间添加一个空格,甚至可能将裸os
导入也放在那里。在所有:
import os
from os import listdir
from os.path import isfile, join
import base64, csv, linecache, logging, math, mimetypes, platform, time, sys, uuid
import django, requests
推荐阅读
- javascript - puppeteer 在所选页面上执行 js 函数
- html - 关于html usemap的一些东西
- haskell - 如何在Haskell中使用doesFileExist函数过滤目录列表?
- android - 使用 ubuntu 和 buildozer 为 android 打包应用程序时出错
- linux - 屏幕记录无法在 ssh 终端上运行
- dart - Flutter 创建无限 ListView.builder 上下滚动
- php - 无法遍历 Laravel POST 中的对象数组
- javascript - 为什么我可以在 Typescript 中将 `Function` 分配给`Interface`?
- c# - 当存在具有实体框架的现有父级时,插入子级的“正确”模式是什么?
- python - Numpy 基于索引值创建数组(Python)