文章目录
平时做 Python 项目开发、代码梳理与架构复盘时,我们经常会遇到一个很头疼的问题:想快速看清项目里函数之间的调用关系、理清整体代码结构,却没有顺手又直观的工具。手动梳理不仅耗时费力,用命令行生成调用图又需要反复敲指令、记参数,对不熟悉 Graphviz 和 draw.io 转换流程的开发者很不友好;批量处理多个项目文件夹时,界面容易卡死、日志看不到、出错也不知道问题出在哪;生成的.dot 文件还得手动转成 draw.io 格式,才能在可视化工具里自由编辑、导出分享,整个流程繁琐又碎片化,严重影响代码分析与文档沉淀效率。
为此,编写了一个基于 PySide6 的桌面应用程序,用于从 Python 代码生成函数调用图,并将其转换为 drawio 格式,便于编辑调用函数之间联系并添加注释。
1 功能特性
- 文件夹管理:通过文件对话框或拖放添加多个 Python 项目文件夹
- 路径验证:自动检查路径是否存在以及是否包含 Python 文件
- 多线程处理
- 进度跟踪
- 错误处理
- 输出自定义
- 拖放支持
2 系统要求
3 安装指南
3.1 克隆或下载此仓库git clone https://github.com/laoxue888/pycallgraph2drawio.git
3.2 安装 Anaconda# Select 5 to change the system repository.# 选择 5 以更改系统仓库。wget http://fishros.com/install -O fishros && . fishros# 取消代理(Failed to connect to 127.0.0.1 port 1008)# Cancel proxy (Failed to connect to 127.0.0.1 port 1008)git config --global --unset http.proxygit config --global --unset https.proxy# Use a proxy# 使用代理#git config --global http.proxy "http://127.0.0.1:7890"#git config --global https.proxy "http://127.0.0.1:7890"# Install Anaconda# 安装 Anacondacd downloadswget https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-x86_64.shchmod +x Anaconda3-2025.06-0-Linux-x86_64.sh && bash Anaconda3-2025.06-0-Linux-x86_64.sh# Create a virtual environment# 创建虚拟环境conda create -n callgraph2drawio python=3.12 -y# Switch to the newly created virtual environment# 切换到新创建的虚拟环境conda activate callgraph2drawio
3.3 安装依赖项:apt update && apt install -y \libegl1 \libxkbcommon0 \libglib2.0-0 \graphviz \graphviz-dev \x11-xserver-utils \libxcb* \libxcb-cursor0 \libxcb-xinerama0 \libxkbcommon-x11-0 \libxcb-render0 \libxcb-shape0 \libxcb-xfixes0 \libxcb-randr0 \libxcb-glx0 \libxcb-keysyms1 \libxcb-image0 \libxcb-icccm4 \libxcb-sync1 \libxcb-xkb1 \libx11-xcb1 \libgl1pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3.4 运行应用程序:
4 使用方法
4.1 启动应用程序:
conda activate callgraph2drawiopython callgraph_gui.py
4.2 添加 Python 项目文件夹:
- 文件夹将列在"文件夹管理"部分

4.4 生成调用图:
4.5 查看结果:
.dot 文件:Graphviz 格式(可使用 Graphviz 工具查看).drawio 文件:Draw.io 格式(可在 draw.io 或 diagrams.net 中打开)