如何解决 E402 的问题?

ale*_*kva 13 python pep8 flake8 pycodestyle

我们正在尝试解决 PEP8 E402 的问题。

大多数情况下,我们的代码被破坏:

import os
os.environ['LIB_CAN_THROW_ERROR_ON_IMPORT'] = 2
import lib
os.environ['LIB_CAN_THROW_ERROR_ON_IMPORT'] = 0 # back
Run Code Online (Sandbox Code Playgroud)

——

if sys.version_info[0] > 2:
    import python3lib
else:
    import python2lib
Run Code Online (Sandbox Code Playgroud)

——

try:
    import lib
except:
    print('lib is required')
    sys.exit(1)
Run Code Online (Sandbox Code Playgroud)

如何解决这些违规行为?

Ada*_*nes 14

PEP8 中指定的指导方针就是——指导方针。当它们有意义时,它们是一套要遵循的规则。

E402 是指导入仅位于文件的顶部。这是为了停止以下行为:

import pygame

# 800 lines of pygame stuff
...

import math
# 10 lines of math stuff
...

# Another 800 pygame lines
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,很难知道math是进口的。如果你需要math在文件末尾再次使用,没有 E402 告诉你,你可能会import math再次使用,这是无害的,但马虎。

就你而言,你不是马虎。在导入另一个库或向用户提供更好的错误消息之前,您专门设置了一些内容。只需告诉你的 linter 忽略注释中建议的那些行上的警告,# noqa: E402在行的末尾。当您告诉 linter “我知道我在做什么,走开”时,您可以想到这一点。

  • 如果您想解释为什么在我发布答案多年后您对我的答案投了反对票,那么也许我可以改进它。 (2认同)