Pylint 对集中导入发出警告

Pylint gives warnings for centralised imports

在一个 python 项目中,我想将 globber 导入到一个名为 common_imports.py 的文件中,以减少 python 文件中导入语句的数量。 而不是写

file1.py

import foo 
import bar
import baz

[...]

file2.py

import foo 
import bar
import baz

[...]

我要写

file1.py

from common_imports import *

[...]

file2.py

from common_imports import *

[...]

common_imports.py

import foo 
import bar
import baz

然而,这给了我很多 pylint 误报。

我可以通过添加 pylint 禁用注释来禁用 common_imports.py 文件中的 pylint 警告。我可以禁用通配符导入。不幸的是,我只能全局禁用未使用的导入,而不是特定于来自 common_imports.py 的所有导入。 有人知道如何在轨道上安装 pylint 吗?

将我上面的评论总结成一个正确的答案:


长话短说:

虽然可重用代码 motive 值得称赞,但不适合这里的用途。听 linter,在同事中保持 hard-earned 的尊重。 :-)

Pythonic观点:

  • 不要

  • 为什么? Python 约定,在其所有的组织荣耀和文档结构中,声明如果您在模块中使用库,将其导入模块。简单明了。

    Imports are always put at the top of the file, just after any module comments and docstrings, and before module globals and constants.

    -- PEP8 - Imports

  • 在较低级别,跟踪导入的 sys.modules dict 只会导入尚未导入的库。所以从效率的角度来说,没有任何收获。

维护者的观点:

  • 不要
  • 为什么?如果(何时)在一个模块中更改/优化代码,从而减轻了对特定导入的需求……“提醒我在哪里查找该库的导入位置?哦,是的,在这里。但是这个另一个模块需要导入,但不是我用来优化此代码的这个新库。我应该在哪里导入它?呃!!!”
    • 您已经失去了以下维护者的 hard-earned 尊重。