如何使用Python绘制无Graphviz依赖的基础设施架构图
无Graphviz依赖的Python基础设施架构图绘制方案
不需要安装任何系统级二进制依赖、仅通过pip install即可完成全环境部署、可复现diagrams官方快速入门示例效果的成熟方案如下:
优先选
drawpyo:纯Python实现,无任何外部依赖,内置和diagrams完全对齐的AWS/GCP/Azure/开源服务图标库,支持容器分组、带标签连线、样式自定义等所有diagrams核心能力,生成的DrawIO格式文件可直接编辑,也可导出为png/svg格式。
安装命令:pip install drawpyo
对应diagrams快速入门示例的实现代码:from drawpyo.diagram import Diagram from drawpyo.diagram.object_libraries.aws import compute, database, storage, network # 初始化画布 diag = Diagram(name="web_service", file_path="./") # 创建VPC分组容器 vpc = diag.add_container("VPC") # 定义VPC内服务节点 web_server = compute.EC2("Web Service", parent=vpc) user_db = database.RDS("User DB", parent=vpc) # 定义VPC外服务节点 cdn = network.CloudFront("CDN") static_assets = storage.S3("Static Assets") # 配置节点连线 cdn.connect_to(web_server) web_server.connect_to(user_db) web_server.connect_to(static_assets) # 生成文件 diag.write()若需要直接生成可直接查看的矢量图/位图、不需要二次编辑,可选
schemdraw:底层基于matplotlib渲染,pip安装时会自动拉取所有依赖,无需额外配置系统环境,支持直接导出svg/png/pdf格式,内置常用云服务、基础设施图标。
安装命令:pip install schemdraw
对应示例实现代码:import schemdraw from schemdraw.elements import aws with schemdraw.Drawing(file="web_arch.svg") as d: # 定义外层CDN节点 cdn = d.add(aws.CloudFront().label("CDN")) # 定义VPC分组框 vpc = d.add(aws.VPC().label("VPC").right().at((2, -1)).width(4).height(3)) # 定义VPC内节点 web = d.add(aws.EC2().label("Web Service").at((3, 0))) db = d.add(aws.RDS().label("User DB").right().at((5, 0))) # 定义VPC外存储节点 s3 = d.add(aws.S3().label("Static Assets").at((3, -2.5))) # 绘制连线 d += aws.Line().at(cdn.E).to(web.W) d += aws.Line().at(web.E).to(db.W) d += aws.Line().at(web.S).to(s3.N)
两个方案均不需要针对Windows/macOS/Linux执行不同的前置安装步骤,安装完依赖后直接运行脚本即可生成对应架构图,效果和diagrams官方示例无明显差异。
内容的提问来源于stack exchange,提问作者ivegotaquestion
相关产品推荐
相关产品推荐

