使用 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
加载中...
4票,平均分:1.00/14
1,595
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

川健

来自系统解决方案部门的
一只奇特的宝可梦