【问题标题】:Python PEP8: Ignore single import on multi-line importPython PEP8:在多行导入时忽略单个导入
【发布时间】:2019-08-11 04:34:13
【问题描述】:

我的 python 代码中有以下导入:

from apps.balance.models import BLOCKED, CREDIT, TRIAL, TrialAlert

但是 PEP8/flake8 告诉我 TrialAlert 没有被使用。在代码本身中,它确实没有被使用,但我确实在 MyPy 注释中使用它,所以我试图添加一个“noqa”只是为了它,但没有成功。如果我将行更改为

from apps.balance.models import BLOCKED, CREDIT, TRIAL, TrialAlert   # noqa # pylint: disable=unused-import

有效!但是我相信它会忽略使用的其他导入。我也试过了

from apps.balance.models import (                                                                                       
    BLOCKED,                                                                                                            
    CREDIT,                                                                                                             
    TRIAL,                                                                                                              
    TrialAlert   # noqa # pylint: disable=unused-import                                                                 
)

但它也没有奏效。谁能告诉我如何忽略只是最后一次导入?

【问题讨论】:

  • 由于解释器/语法的工作方式,我认为这是不可能的。您最好的选择可能是将其拆分为 2 个不同的导入:from apps.balance.models import BLOCKED, CREDIT, TRIAL ; from apps.balance.models import TrialAlert # noqa # pylint: disable=unused-import ,不幸的是违反了 DYI。
  • 旁注:PEP8 大约三年前由request of Guido Van Rossum 更名为pycodestyle
  • 我的意思是“不幸地违反了DRY”,当然......
  • 您永远不应该从模块中导入单个符号。取而代之的是from apps.balance import models,然后使用models. BLOCKED等。
  • Kurtis 的说法是见仁见智。 PEP8 对此没有意见。不同的大公司(例如,谷歌)和项目(例如,OpenStack)将其作为一项规则,但允许例外。甚至 Google 的样式指南也允许导入类型注释而不是模块。

标签: python pep8 flake8


【解决方案1】:

您必须添加:

from apps.balance.models import ( # noqa # pylint: disable=unused-import                                                                               
    BLOCKED,                                                                                                           
    CREDIT,                                                                                                             
    TRIAL,                                                                                                              
    TrialAlert                                                                 
)

禁用 flake8 警告:

from apps.balance.models import ( # noqa F401                                                                              
    BLOCKED,                                                                                                           
    CREDIT,                                                                                                             
    TRIAL,                                                                                                              
    TrialAlert                                                                 
)

【讨论】:

    猜你喜欢
    • 2021-01-03
    • 2018-10-11
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2018-11-20
    相关资源
    最近更新 更多