2016-09-28 164 views
4

PEP8表明:flake8:import語句是錯誤的順序

Imports should be grouped in the following order: 

1. standard library imports 
2. related third party imports 
3. local application/library specific imports 

You should put a blank line between each group of imports. 

我使用Flake8Lint這崇高的文本插件皮棉Python文件。

我的如下代碼:

import logging 
import re 
import time 
import urllib 
import urlparse 

from flask import Blueprint 
from flask import redirect 
from flask import request 
from flask.ext.login import current_user 
from flask.ext.login import login_required 

from my_application import one_module 

它會顯示如下警告:

import語句是在錯誤的順序,從my_application之類應該從flask.ext.login是前。

但燒瓶是第三方庫,它應該在我的my_application導入之前。這就是爲什麼?如何解決它?

+0

我假設這是因爲「庫特定的導入」 - 可能Flake8Link明白flask.ext.login特定於庫。我會說 - 忽略flake8錯誤。 – sokoli

+1

根據[Flake8Lint](https://github.com/dreadatour/Flake8Lint),除非您指定進口訂單,否則進口訂單檢查將關閉。此外,它使用[flake8-import-order](https://github.com/PyCQA/flake8-import-order#configuration)讓您告訴它您的應用程序名稱是什麼,因此它知道什麼是本地導入。 –

+0

在一天結束時,*它真的沒關係*。只要您的進口按照合理的方式分組**,以及在您之後將會讀取您的代碼的人員,請不要擔心自動檢查程序是否認爲應在模塊b之前或之後導入模塊a。 – MattDMo

回答

1

flake8-import-order插件需要爲configured以知道應將哪些名稱視爲本地應用程序。

爲了您例如,如果使用在你的包根目錄.flake8 ini文件,它應該包含:

[flake8] 
application_import_names = my_application 

另外,您可以只使用相對進口應用程序的本地進口:

from __future__ import absolute_import 

import os 
import sys 

import requests 

from . import (
    client 
) 


...