任何人都知道可以扫描源目录并检测循环导入的库/脚本吗?
答案 0 :(得分:2)
我完全不知道任何工具,但我现在可以想到几种方法来获取这些数据。
对于您拥有的每个模块,创建一个导入它的存根模块,然后使用
运行该模块$ python -v stub_module.py
这仅适用于您不依赖于sys.path hackery并且您的模块在导入时没有危险的副作用(两个非常可疑的功能FWIW)。您将获得传递导入闭包,但使用此方法检测循环导入应该很简单。
使用logilab.astng,可以轻松提取模块的所有直接导入(查找类型为logilab.astng.nodes.From
和logilab.astng.nodes.Import
的节点)。获得所有模块的直接导入列表后,创建导入图并查找周期。
同样,这仅在您不使用sys.path hacks时才有效。