【问题标题】:flake8: import statements are in the wrong orderflake8:导入语句的顺序错误
【发布时间】:2017-02-05 22:31:50
【问题描述】:

PEP8 建议:

进口应按以下顺序分组:

  1. 标准库导入
  2. 相关的第三方进口
  3. 本地应用程序/库特定导入

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

我正在使用 Flake8Lint 用于 lint Python 文件的 Sublime Text 插件。

我的代码如下:

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 statements are in the wrong order, from my_application should be before from from flask.ext.login

但是flask 是第三方库,它应该在我的my_application 导入之前。这就是为什么?如何解决?

【问题讨论】:

  • 我想这是因为“库特定的导入” - 可能 Flake8Link 理解 flask.ext.login 是特定于库的。我会说 - 忽略 flake8 错误。
  • 根据Flake8Lint,除非您指定,否则导入订单检查将关闭。此外,它使用flake8-import-order,让您告诉它您的应用程序名称是什么,以便它知道什么是本地导入。
  • 归根结底,真的没关系。只要您的导入以一种合理的方式对您和在您之后阅读您的代码的人进行分组,就不必担心自动检查器是否认为模块 a 应该在之前或之后导入模块 b.

标签: python sublimetext3 flake8


【解决方案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
)


...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2021-08-03
    • 2016-08-26
    相关资源
    最近更新 更多