使用 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
加载中...
5票,平均分:1.00/15
2,092
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

川健

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