使 flake8 区分未定义函数和星型导入

Sur*_*Dog 4 python pep8 python-import flake8

我有一个相当大的项目,我试图在发布之前清理它,但是当我运行 flake8 时,我得到了大量的

'F405 <function> may be undefined, or defined from star imports: generic_functions`
Run Code Online (Sandbox Code Playgroud)

我可以通过替换该行来避免这种情况:

from generic_functions import *
Run Code Online (Sandbox Code Playgroud)

在我的文件的开头,但是:

  1. 我确实使用了其中的所有函数,所以我不明白如何超过输入每个函数的 80 个字符的限制更加 Pythonic:

     from generic_functions import (function1, function2, function3, function4, function5, function6, function7...)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 执行上述操作会很乏味,特别是如果我需要在 generic_functions.py 中的数十个函数中添加或删除

另一种选择是禁用 F405 警告,但如果该函数确实未定义怎么办?如果允许明星导入,同时仍然捕获任何未定义的内容,那就太好了。有没有办法做到这一点?我尝试将 # noqa 添加到导入行,但似乎没有帮助。

san*_*ash 5

您可以执行以下操作:

  1. 将您的导入保留为from generic_functions import *
  2. 将 flake8 运行为flake8 --ignore=F405 file.py. 我真的不知道为什么# noqa不起作用,但--ignore确实有效。
  3. 使用 pylint 测试其余可能的错误。Pylint 能够确定它<function>是从 定义和导入的generic_functions