首页 > 解决方案 > 在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)

上述行是什么意思,为什么需要它?

标签: pythonpylint

解决方案


PEP8建议对导入进行排序和分组,如下所示:

进口应按以下顺序分组:

  1. 标准库导入。

  2. 相关第三方进口。

  3. 本地应用程序/库特定的导入。

您应该在每组导入之间放置一个空行。

在你的情况下, 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 

推荐阅读