我知道这个主题已经有各种讨论了,但我有一个具体的,稍微不同的问题(我发现大多数现有的问题都集中在其他包的外部(内部)依赖关系上,而我的兴趣主要是我的直接包)。
我找到了各种工具来帮助查找和可视化依赖关系:
- pycallgraph:http://pycallgraph.slowchop.com/en/master/ - snakefood:http://furius.ca/snakefood/ - modulegraph:http://pythonhosted.org/modulegraph/ 我使用的问题在于它们显示了所有模块的依赖关系,而我真正想要关注的是自己的内部依赖以及每个模块的“第一个”外部依赖关系。例如:我在许多地方使用pandas和scipy,所以我希望看到这些引用,但不是这些包对其他内容的内部结构和依赖关系。您可以想象,这些会导致大量其他依赖项的爆炸,这些依赖项不在我的控制范围之内,因此不是我直接关心的。
Pycallgraph确实有效,但它提供了巨大的结果,使我感到难以区分我所关心的总体依赖关系的微小部分。有人有任何指针吗?我需要自己构建更简单的东西还是我忽略了什么?
谢谢您的帮助!
编辑:
所以对我来说,pycallgraph并不是很方便,因为它实际上是通过执行代码来工作的。modulegraph的问题在于(正如评论中所说),它创建了一个巨大的dot文件(9000行)。然而,它没有给出同一包级别的模块依赖关系。因此,如果您有一个名为“main”的包和模块“a”、“b”、“c”,以及一个名为“main.file_import”的模块和“x”、“y”、“z”,它会在“main”和“main.file_import”之间建立一个依赖关系。这不是我要找的,因为我正在尝试确定实际结构是否应该重构(在模块和函数/类级别上)。当我找到或创建一个好的解决方案时,我会继续在这里添加内容。我曾认为这是一个常见的问题。
我找到了各种工具来帮助查找和可视化依赖关系:
- pycallgraph:http://pycallgraph.slowchop.com/en/master/ - snakefood:http://furius.ca/snakefood/ - modulegraph:http://pythonhosted.org/modulegraph/ 我使用的问题在于它们显示了所有模块的依赖关系,而我真正想要关注的是自己的内部依赖以及每个模块的“第一个”外部依赖关系。例如:我在许多地方使用pandas和scipy,所以我希望看到这些引用,但不是这些包对其他内容的内部结构和依赖关系。您可以想象,这些会导致大量其他依赖项的爆炸,这些依赖项不在我的控制范围之内,因此不是我直接关心的。
Pycallgraph确实有效,但它提供了巨大的结果,使我感到难以区分我所关心的总体依赖关系的微小部分。有人有任何指针吗?我需要自己构建更简单的东西还是我忽略了什么?
谢谢您的帮助!
编辑:
所以对我来说,pycallgraph并不是很方便,因为它实际上是通过执行代码来工作的。modulegraph的问题在于(正如评论中所说),它创建了一个巨大的dot文件(9000行)。然而,它没有给出同一包级别的模块依赖关系。因此,如果您有一个名为“main”的包和模块“a”、“b”、“c”,以及一个名为“main.file_import”的模块和“x”、“y”、“z”,它会在“main”和“main.file_import”之间建立一个依赖关系。这不是我要找的,因为我正在尝试确定实际结构是否应该重构(在模块和函数/类级别上)。当我找到或创建一个好的解决方案时,我会继续在这里添加内容。我曾认为这是一个常见的问题。
dot
),并编写脚本来削减图形吗(例如使用pydot
)? - shx2