在 Mac 上哪里添加 Graphviz 的可执行文件

2023-12-29

我正在尝试使用Graphviz但收到错误消息:

graphviz.backend.ExecutableNotFound: failed to execute ['dot', '-Tpdf', '-O', 'test-output/aoc.gv.pdf'], make sure the Graphviz executables are on your systems' PATH

我正在运行的代码是从文档中剪切并粘贴的:

from graphviz import Digraph, Graph
dot = Digraph(comment='The Round Table')
dot.node('A', 'King Arthur')
dot.node('B', 'Sir Bedevere the Wise')
dot.node('L', 'Sir Lancelot the Brave')
dot.edges(['AB', 'AL'])
dot.edge('B', 'L', constraint='false')
dot.render('test-output/aoc.gv.pdf')

文件将输出到正确的文件夹,文件就在那里,有 170 字节,但无法打开。我尝试过其他扩展,例如“gv”,但它们也不起作用。我正在使用最新版本Graphviz这是 0.10.1,我尝试在 PC 上打开这个文件,但它在 PC 上也不起作用(我有一台 Mac)。这个问题类似于

找不到 Graphviz 的可执行文件(Python 3.4) https://stackoverflow.com/questions/28312534/graphvizs-executables-are-not-found-python-3-4

and

为什么 pydot 在 Windows 8 中无法找到 GraphViz 的可执行文件? https://stackoverflow.com/questions/18438997/why-is-pydot-unable-to-find-graphvizs-executables-in-windows-8

然而,我理解这些帖子存在重大障碍。第一,我对Python如何在计算机上执行知之甚少,所以我什至不知道什么是环境变量。其次,当他们引用计算机的 PATH 时,我只能假设他们正在谈论正在执行的文件的目录Graphviz模块,但我对此不确定。所以我添加了这行代码:

import sys
str1 = "/library/frameworks/python.framework/versions/3.6/lib/python3.6/site-packages/graphviz/"
sys.path.append(str1)

但这是行不通的。第三,如果我要实施这一步:

将此字符串添加到变量值列表的末尾(包括分号):;C:\Program Files (x86)\Graphviz2.34\bin

然后我必须将其翻译成 Mac 版本,但我做不到。任何帮助,将不胜感激。


诊断是这样说的dot不在您的 $PATH 中,它不会出现在该环境变量提到的任何目录中。您希望尝试以下命令报告一些版本号:

$ dot -V
dot - graphviz version 2.40.1 (20161225.0304)
$
$ which dot
/usr/local/bin/dot
$
$ echo $PATH | tr : ' ' | fmt -w1 | grep local
/usr/local/bin

如果您尚未使用 Brew,那么您应该使用。这是将此程序和许多其他程序安装到 Mac 上的最简单方法。访问https://brew.sh/ https://brew.sh/并按照说明进行操作。然后输入:

$ brew install graphviz
...
$ /usr/local/bin/dot -V

那应该工作得很好。如果dot -V说“未找到”,然后只需将正确的目录附加到您的路径中:

$ export PATH="${PATH}:/usr/local/bin"

如果您的 bash shell 可以运行它,那么您的 python 程序也应该可以。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Mac 上哪里添加 Graphviz 的可执行文件 的相关文章

  • Python 3 如何知道如何 pickle 扩展类型,尤其是 Numpy 数组?

    Numpy 数组是扩展类型 也称为使用 C API 扩展定义的 声明了 Python 解释器范围之外的附加字段 例如data属性 这是一个Buffer Structure 如 Numpy 中所述阵列接口 https docs scipy o
  • graphviz 嵌入 url

    我试图弄清楚如何生成带有超链接的图表 您可以单击以访问图表中每个节点 边的更多详细信息 我发现 graphviz 使用 URL 节点属性具有这种能力 使用我的测试文件 graph G node label N graph bb 0 0 21
  • 现在与出生日期之间的年、月、日、分钟差异

    import datetime birthday datetime datetime 1996 8 15 differnce datetime datetime now birthday This returns a timedelta o
  • 无法使用 beautifulsoup 模块 python 从 HTML 检索温度值

    我正在使用 BeautifulSoup4 来解析此 HTML 查看源代码 https weather com en IN weather today l 17 39 78 49 https weather com en IN weather
  • 如何在Python中获取声音级别?

    对于我正在进行的项目 我需要获取麦克风的实时分贝级别 我见过阴谋家 Print out realtime audio volume as ascii bars import sounddevice as sd import numpy as
  • 无法使用 BeautifulSoup4 (Python 3) 抓取特定表

    我想从 Ligue 1 足球网站上抓取一张表格 具体来说 该表包含有关卡片和裁判的信息 http www ligue1 com LFPStats stats arbitre competition D1 http www ligue1 co
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • Python 3 列表列表中的列表理解以转换类型

    考虑以下列表 list1 1 1 1 2 1 3 2 1 2 2 2 3 要理解字符串列表并将其转换为浮点数 可以使用 list1 0 float i for i in list1 0 但我尝试理解浮点数列表的列表并没有完全起作用 list
  • While 在范围内循环用户输入

    我有一些代码 我想要求用户输入 1 100 之间的数字 如果他们在这些数字之间输入一个数字 它将打印 Size input 并打破循环 但是 如果他们在外部输入一个数字1 100 它将打印 大小 输入 并继续向他们重新询问一个数字 但我遇到
  • Flask-migrate:更改模型属性并重命名相应的数据库列

    我对 Flask 有一些经验 但对数据库 Flask migrate alembic SqlAlchemy 不太了解 我正在跟进this https blog miguelgrinberg com post the flask mega t
  • 捕获 subprocess.run() 的输入

    我在 Windows 上有一个交互式命令行 exe 文件 是由其他人编写的 当程序出现异常时 它会终止 并且我对程序的所有输入都会丢失 所以我正在编写一个 python 程序 它调用一个阻塞子进程subprocess run 并捕获所有输入
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • 无限实时连续传输音频信号,Python

    我有一个简单的问题 在 Python 中从音频插孔流式传输音频信号时 使用 pyaudio 库如何继续流式传输音频信号 直到我选择 停止 程序 示例 我们的方式捕捉我们的网络摄像头 https docs opencv org 3 0 bet
  • 在html表格的每一行添加点击功能

    我最近创建了一个函数 它根据用户在网站中的输入进行一些复杂的名称匹配 并将结果作为表格格式的 html 文件返回 我的问题是如何在每一行添加点击功能 df get cust info returns a pandas dataframe d
  • Python 类型提示 Dict 语法错误 可变默认值是不允许的。使用“默认工厂”

    我不知道为什么解释器会抱怨这个类型的字典 对于这两个实例 我得到一个 不允许可变默认值 使用默认工厂 语法错误 我使用的是 python 3 7 3 from dataclasses import dataclass from typing
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 如何将Python3设置为Mac上的默认Python版本?

    有没有办法将 Python 3 8 3 设置为 macOS Catalina 版本 10 15 2 上的默认 Python 版本 我已经完成的步骤 看看它安装在哪里 ls l usr local bin python 我得到的输出是这样的

随机推荐