当前位置:首页>python>如何使用Python制作流程图

如何使用Python制作流程图

  • 2026-10-14 14:40:19
如何使用Python制作流程图
一、前期调研
用 Python 画流程图,常见有这几种路线,按专业度 / 上手难度从低到高列出
方法
优点
缺点
Graphviz (推荐)
专业、语义清晰、最像“真正的流程图”
需要额外安装 Graphviz
matplotlib
不装额外软件,适合简单流程
手动画框,略麻烦
Mermaid
写代码即流程图,适合Markdown、文档系统、MCP/LLM 项目
需支持Mermaid 文本渲染
Diagrams
适合 云架构 / 系统拓扑
偏系统架构,不太适合流程图
二、Graphviz 环境安装(Windows)
1. 直接 pip 安装
pip install graphviz
但是,虽然可以安装成功,但在运行 Graphviz 示例后,控制台直接报错,内容如下:
graphviz.backend.execute.CalledProcessError: Command '[WindowsPath('dot'), '-Kdot', '-Tpng', '-O', 'flowchart']' returned non-zero exit status 3221225477. [stderr: b'Warning: Could not load "C:\\ProgramData\\anaconda3\\envs\\py310\\Library\\bin\\gvplugin_pango.dll" - It was found, so perhaps one of its dependents was not.  Try ldd.\r\nWarning: Could not load "C:\\ProgramData\\anaconda3\\envs\\py310\\Library\\bin\\gvplugin_pango.dll" - It was found, so perhaps one of its dependents was not.  Try ldd.\r\nWarning: Could not load "C:\\ProgramData\\anaconda3\\envs\\py310\\Library\\bin\\gvplugin_pango.dll" - It was found, so perhaps one of its dependents was not.  Try ldd.\r\nWarning: Warning: no value for width of non-ASCII character 229. Falling back to width of space character\r\n']
这是 Windows + Anaconda + Graphviz 的经典坑
2. 解决办法
① 卸载已有的 graphviz
pip uninstall graphviz -yconda remove graphviz -y
② 用 conda-forge 重装
conda install -c conda-forge graphviz python-graphviz -y
conda-forge 会把pango / cairo / freetype / fontconfig 一整套依赖装全
③ 验证
dot -V
正确输出示例:
dot - graphviz version 9.x.x
3. 流程图demo
① 代码展示
import os# 一定要在 import graphviz 之前os.environ['GDFONTPATH'] = r'C:\Windows\Fonts'os.environ['GV_PLUGIN_PATH'] = ''  # 禁用 pango(关键)from graphviz import Digraph# 这一行是“生死线”,不设置编码方式看到的是一堆 5F 59 00 CB 中文乱码dot = Digraph(      format='png',       encoding='utf-8' )dot.graph_attr.update(      charset='UTF-8',       fontname='SimHei')dot.node_attr.update(      fontname='SimHei')dot.edge_attr.update(      fontname='SimHei')# 添加节点dot.node('A', '开始')dot.node('B', '读取数据')dot.node('C', '是否有效?')dot.node('D', '处理数据')dot.node('E', '结束')# 添加边dot.edge('A', 'B')dot.edge('B', 'C')dot.edge('C', 'D', label='是')dot.edge('C', 'E', label='否')dot.edge('D', 'E')# 流程图渲染 dot.render('flowchart_cn')
② 结果展示

最新文章

随机文章