【问题标题】:Python: Script to detect circular imports [closed]Python:检测循环导入的脚本[关闭]
【发布时间】:2012-02-17 21:50:32
【问题描述】:

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

【问题讨论】:

  • Python 解释器似乎很容易找到我的所有内容,但我猜你正在寻找某种静态分析工具.....
  • 是的,我知道有些只能在运​​行时检测到,但我认为我们的大多数都可以静态检测到。

标签: python python-2.5


【解决方案1】:

我不完全了解任何工具,但我现在可以想到几种方法可以为您获取这些数据。

让口译员为您工作

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

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

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

使用 logilab.astng

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2014-04-06
    相关资源
    最近更新 更多