Python:如何确保导入来自定义模块?

时间:2014-07-19 22:18:51

标签: python static-analysis python-import

我认为以下是糟糕的风格:

# 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,并在内部从其他模块导入必要的符号。但是,在我使用的代码库中并非如此,这里是重构的工件,我真的想要消除它们。

1 个答案:

答案 0 :(得分:-1)

这是一个草稿脚本,解决了不到100行的问题:http://pastebin.com/CFsR6b3s