主页

索引

模块索引

搜索页面

pydeps-生成依赖图

备注

这个工具好用

安装 pydeps:

pip install pydeps

:
    需求先安装 graphviz 保证 dot 命令可用

生成依赖图:

pydeps /path/to/your/project

选项

–max-bacon

# --max-bacon: 指定培根数(默认2)
# --max-bacon=0 (infinite)
shell> pydeps pydeps --show --max-bacon 2 --pylib -x os re types _\* enum
https://img.zhaoweiguo.com/uPic/2024/06/Edq1oC.png

–cluster

# --cluster: collapse external modules into folder-shaped objects
# 如果你对外部模块的内部结构不感兴趣,你可以添加 --cluster 标志,它将外部模块折叠成文件夹形状的对象
shell> pydeps pydeps --max-bacon=4 --cluster
https://img.zhaoweiguo.com/uPic/2024/06/aNPp7M.png

–max-cluster-size=N

# --max-cluster-size: controls how many nodes can be in a cluster before it is collapsed to a folder icon
# 要查看内部结构并描绘外部模块,请使用 --max-cluster-size 标志,该标志控制在折叠为文件夹图标之前集群中可以有多少个节点

指定较大的 --max-cluster-size 就会把 yaml 内部结构展示出来:

shell> pydeps pydeps --max-bacon=4 --cluster --max-cluster-size=1000
https://img.zhaoweiguo.com/uPic/2024/06/u8gQNB.png

指定较小的 --max-cluster-size 就会把大于3的 yaml 缩成一个文件夹:

shell> pydeps pydeps --max-bacon=4 --cluster --max-cluster-size=3
https://img.zhaoweiguo.com/uPic/2024/06/GuW2hC.png

–min-cluster-size=N

# --min-cluster-size: remove clusters with too few nodes

–rmprefix xxxx

# --rmprefix pydeps.: 在显示的图表里面不显示 `pydeps.`

–max-module-depth=N

# --max-module-depth:
# 标志检查包的内部依赖关系,同时限制模块深度
shell> pydeps pandas --only pandas --max-module-depth=2 -x pandas._\* pandas.test\* pandas.conftest

–rankdir

# Graph direction
# 指定显示方向

Top to bottom (default):

shell> pydeps pydeps --rankdir TB

Bottom to top:

shell> pydeps pydeps --rankdir BT

Left to right:

shell> pydeps pydeps --rankdir LR

Right to left:

shell> pydeps pydeps --rankdir RL
https://img.zhaoweiguo.com/uPic/2024/06/MmBMFP.png

本图也可与下面选项 --collapse-target-cluster 对比,理解 --collapse-target-cluster 选项的作用

–collapse-target-cluster

  • 当内部目标包依赖项不重要时,可以使用 –collapse-target-cluster 标志折叠它们

  • 把内部依赖包看成一个整体

  • This option also implies --cluster

shell> pydeps pydeps --collapse-target-cluster
https://img.zhaoweiguo.com/uPic/2024/06/ODCXaE.png

其他

常用选项:

-x/--exclude-exact: 排除module列表
    -x PATTERN [PATTERN ...]
    or
    --exclude PATTERN [PATTERN ...]
    示例:
    shell> pydeps pandas --max-module-depth=2 -x pandas._\* pandas.test\* pandas.conftest

-xx/--exclude-exact:
    示例:
    -xx foo.bar will exclude foo.bar, but not foo.bar.blob


--only MODULE_PATH [MODULE_PATH ...]
    only include modules that start with MODULE_PATH


--pylib               include python std lib modules
--pylib-all           include python all std lib modules (incl. C modules)

使用技巧:

指定主要模块/包
pydeps /path/to/your/project/main_module.py

排除不必要的依赖: 限制生成的依赖层数,只显示最多n层的依赖
pydeps --max-bacon=2 /path/to/your/project

实战

metaGPT:

pydeps --max-bacon=2 ./metagpt/roles/product_manager.py
pydeps --max-bacon=2 ./metagpt/actions/action.py
...

llama_agent:

# 生成依赖图
pydeps  --max-bacon=5  --collapse-target-cluster  ./llama_agents

# 生成内部详细、外部cluster图
➜ pydeps  --max-bacon=2  --cluster  ./llama_agents

llama_index:

pydeps  --max-bacon=2  --collapse-target-cluster  ./llama-index-core/llama_index/core/

pydeps  --max-bacon=2  --cluster  ./llama-index-core/llama_index/core/

主页

索引

模块索引

搜索页面