Python:用于检测循环导入的脚本

时间:2012-02-17 21:50:33

标签: python python-2.5

任何人都知道可以扫描源目录并检测循环导入的库/脚本吗?

1 个答案:

答案 0 :(得分:2)

我完全不知道任何工具,但我现在可以想到几种方法来获取这些数据。

让口译员为你工作

对于您拥有的每个模块,创建一个导入它的存根模块,然后使用

运行该模块
$ python -v stub_module.py

这仅适用于您不依赖于sys.path hackery并且您的模块在导入时没有危险的副作用(两个非常可疑的功能FWIW)。您将获得传递导入闭包,但使用此方法检测循环导入应该很简单。

使用logilab.astng

使用logilab.astng,可以轻松提取模块的所有直接导入(查找类型为logilab.astng.nodes.Fromlogilab.astng.nodes.Import的节点)。获得所有模块的直接导入列表后,创建导入图并查找周期。

同样,这仅在您不使用sys.path hacks时才有效。