1

我正在为 Python 使用graphviz库。

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

“ValueError:在路径中找不到程序点”(我尝试了所有选项:'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 后,当我尝试从 Python 脚本和 C 程序打印路径时,我得到 /usr/bin:/bin:/usr/sbin:/sbin,而我的 echot $ PATH 有很多行。

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

PS 我使用 Webots 作为我的 IDE

4

1 回答 1

2

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

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

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

于 2015-05-18T09:13:36.533 回答