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

您好
,我是来自循环参考
系统解决方案部门的河合先生。
五月到了,真是个黄金周!
那么,当你用 Python 开发项目时,你是否遇到过诸如“这段代码依赖于哪个模块?”或者“我无法理解项目的整体结构”之类的问题?(啊?没有?)
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" } }
如上所述,您还可以输出多种格式的文件。
安装起来超级简单,快来试试吧!
完全的
4