我正在尝试使用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's executables are not found (Python 3.4)
和
Why is pydot unable to find GraphViz's 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对应的版本,但我无法。任何帮助将不胜感激。
答案 0 :(得分:0)
诊断是说public class actions {
public Vector<String> getDataForCurrentUser() {
// Access the AL_data arraylist stored in the App application scoped bean
ArrayList<District> m = Application.get().AL_data;
}
不在$ PATH中,它没有出现在该env var提及的任何目录中。您希望在使用以下命令报告某些版本号时达到一个目的:
dot
如果您尚未使用Brew,则应该使用。这是将此程序和许多其他程序添加到Mac上的最简单方法。访问https://brew.sh/,然后按照说明进行操作。然后输入:
$ 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 install graphviz
...
$ /usr/local/bin/dot -V
表示“未找到”,则只需将适当的目录附加到PATH:
dot -V
如果您的bash shell可以运行它,那么您的python程序也应该可以。
答案 1 :(得分:0)
问题解决了。我花了一段时间才弄清楚我必须先下载一些非pythonic软件,然后才能使pythonic软件正常工作。
foo.func
在第1步中,我之前已经做过,但是收到一条错误消息。它告诉我更改某些文件的所有权,所以我做到了。然后尝试
foo2.func
再次就成功了。