使用 pydeps 可视化 Python 项目依赖关系

您好
,我是来自循环参考
系统解决方案部门的河合先生。
五月到了,真是个黄金周!
那么,当你用 Python 开发项目时,你是否遇到过诸如“这段代码依赖于哪个模块?”或者“我无法理解项目的整体结构”之类的问题?(啊?没有?)
一个可以帮助解决此类问题的实用工具pydeps。
使用 pydeps,您可以分析 Python 项目中模块之间的依赖关系,并将其可视化为易于理解的图表。
本文将介绍如何安装和使用 pydeps。
设置和准备
■ 验证环境
Ubuntu 24.04.2 LTS Python 3.12.3
来绘制图表Graphviz安装
$ sudo apt update $ sudo apt install graphviz
在您选择的位置创建一个项目目录,然后进入该目录。
这次,我们将使用 Python 的标准虚拟环境 (venv)。您可以使用任何您喜欢的版本控制工具。
$ mkdir myproject $ cd myproject $ python3 -m venv env $ source env/bin/activate
安装 pydeps
(env)$ pip3 install pydeps
创建示例代码
在 myproject/ 目录下放置一些简单的代码。
这段示例代码演示了基本的依赖关系,其中 main.py 导入并使用了 utils.py。
■配置
myproject/ ├── main.py └── utils.py
■utils.py
def helper_function(): print("这是一个辅助函数")
■main.py
import utils # 导入 utils.py def main_process(): print("运行主进程") utils.helper_function() if __name__ == "__main__": main_process()
将 main.py 分解成更小的部分:
1) 它依赖于另一个名为 utils.py 的文件(导入 utils),
2) 它使用了其中的 helper_function 函数(utils.helper_function()),
3) 它在名为 main_process 的函数中执行主要处理,
以及 4) 当直接作为脚本执行时,它会启动 main_process 函数(如果 __name__ == "__main__":)。
结构如下。
# 执行结果 (env)$ python3 main.py 运行主进程 这是一个辅助函数
试用 pydeps
我们马上在 main.py 上运行一下试试。
(env)$ pydeps main.py
▼ 已输出“main.svg”。pydeps

会检查“import utils”这一行,并将“main 依赖于 utils”的信息以图表的形式显示出来。
顺便说一下,这是另一个完全不同的项目的内容,但如果存在多个依赖项,输出结果将如下所示。

其他选项
您还可以使用选项以 svg 以外的格式输出。
■导出到其他扩展名
# -o 选项 (env)$ pydeps main.py -o dependency.png
■基于JSON的输出
(env)$ pydeps main.py --show-deps { "main.py": { "bacon": 0, "imports": [ "utils" ], "name": "main.py", "path": null }, "utils": { "bacon": 1, "imported_by": [ "main.py" ], "name": "utils", "path": "/home/hamchan/TEST/myproject/utils.py" } }
如上所述,您还可以输出多种格式的文件。
安装起来超级简单,快来试试吧!
完全的
5
