我认为以下是糟糕的风格:
# In foo_pkg/bla_mod.py:
magic_value=42
# In foo_pkg/bar_mod.py:
from .bla_mod import magic_value
# In doit.py:
from foo_pkg.bar_mod import magic_value
相反,我希望始终从已定义的模块中导入对象,即在这种情况下:
# In doit.py:
from foo_pkg.bla_mod import magic_value
手动查找此类问题很快就会变得乏味(对于每个导入的对象,您必须打开模块并检查它是否定义了对象,或者是否从另一个模块导入)。
自动执行此检查的最佳方法是什么?令我惊讶的是,pylint和pyflakes似乎都没有合适的检查器,但也许还有其他工具(甚至可以在Python本身使用的一些技巧)?
问题陈述简而言之:给定一堆python源文件,从一个本身不定义对象的模块中查找每个对象的导入。
我知道有一些库(包括标准库),其中一个模块提供主外部API,并在内部从其他模块导入必要的符号。但是,在我使用的代码库中并非如此,这里是重构的工件,我真的想要消除它们。