在python中对导入语句进行分组

时间:2018-08-05 17:39:46

标签: python pylint

我最近开始学习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)

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

1 个答案:

答案 0 :(得分:2)

PEP8建议按顺序订购和分组进口:

  

进口应按以下顺序分组:

     
      
  1. 标准库导入。

  2.   
  3. 相关的第三方进口。

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

  6.   
     

您应该在每组进口之间放置一个空白行。

在您的情况下,django和请求是第三方导入的,因此您应该写

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