从 C 生成 Python 脚本时出现 graphviz 问题

graphviz issue when spawning Python script from C

我正在为 Python.

使用 graphviz

当我从终端 运行 脚本时,图表被创建,但是当我从 C 启动脚本时使用 posix_spawn 的程序,我收到错误消息说

"ValueError: Program dot not found in path" (I have tried all options: 'neato', 'dot', 'twopi', 'circo', 'fdp', 'nop').

我的 Python 脚本使用 #!/usr/local/bin/python 位置。我试图明确使用此路径并尝试相同的顺序:

import pygraphviz as pgv
G = pgv.AGraph(directed=True)
G.add_node(1)
G.get_node(1).attr['label'] = 'hi'
G.draw('test.png', prog='dot')

成功了

我不知道为什么在使用 posix_spawn 调用脚本后,graphviz 库无法再找到路径。

编辑:

将点路径添加到:bash_profile、bash_rc 和 etc/paths 后,我得到 /usr/bin:/bin:/usr/sbin:/sbin我尝试从 Python 脚本和 C 程序打印我的路径,而我的回显 $PATH 有很多行。

还尝试从 Python sys.path.append('/opt/local/bin/dot')

附加 PATH

P.S。我正在使用 Webots 作为我的 IDE

错误消息说 graphviz 不在您的路径中。确保 $PATH 包含包含 dot 和其余 graphviz 工具的文件夹。

[编辑] 我不确定 Webots 从哪里获取路径;我的猜测是 Mac OS/X 剥离了您从桌面启动的进程的 PATH(或者桌面进程可能以非常基本的 PATH 启动)。

对于这种情况,我通常将 C 程序包装在设置环境(如 PATH)的可执行脚本中,然后调用 C 程序本身。当您从任何地方执行脚本时,代码将按预期运行。