Python diagrams库生成代码式架构图时自定义图标不显示
问题原因
自定义GitLab图标不显示的核心问题是相对路径解析规则不匹配:
diagrams本身不直接渲染图片,它会先生成Graphviz格式的dot描述文件,再调用Graphviz工具完成最终绘图。这时候Graphviz解析图片相对路径的基准,是dot文件和最终生成图片的存放目录,不是你运行Python命令时终端所在的工作目录。
你配置里把生成的架构图存在diagrams/目录下(对应filename="diagrams/my_diagram_rec"参数),但传给Custom的图标路径写的是./diagrams/resources/gitlablogo.png,Graphviz从diagrams/目录出发找这个路径,实际会定位到根本不存在的diagrams/diagrams/resources/gitlablogo.png,自然加载不出图标。
另外你代码最后一行定义的边没有写连接的目标节点,这根线渲染的时候也不会正常显示,记得补上对应节点。
解决方法
两种方案选一个即可:
- 方案1:直接修改相对路径
把图标路径改成相对于图片输出目录(也就是diagrams/文件夹)的相对路径即可,修改后代码:gitlab_repo = Custom("Git Repo", "./resources/gitlablogo.png") - 方案2:使用绝对路径(推荐,无路径兼容问题)
用Python内置的pathlib模块,基于当前脚本文件的位置动态拼接图标的绝对路径,不管你在哪个目录下执行脚本都不会出现文件找不到的问题,示例代码:from pathlib import Path # 获取当前脚本所在文件夹的绝对路径 script_dir = Path(__file__).parent.resolve() gitlab_icon_path = script_dir / "resources" / "gitlablogo.png" gitlab_repo = Custom("Git Repo", str(gitlab_icon_path))
内容的提问来源于stack exchange,提问作者Max Power
相关产品推荐
相关产品推荐

