首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Graphviz抛出调用view()函数的错误

Graphviz抛出调用view()函数的错误
EN

Stack Overflow用户
提问于 2018-11-17 00:18:01
回答 2查看 2.4K关注 0票数 2

我试图重新构建fsm.py的代码,以显示生产线的流程序列。我在一个jupyter笔记本上这样做,并且运行命令

代码语言:javascript
运行
复制
conda install -c anaconda graphviz

此安装已顺利完成,没有出现错误。

来自源的给定代码是:

代码语言:javascript
运行
复制
from graphviz import Digraph

f = Digraph('finite_state_machine', filename='fsm.gv')
f.attr(rankdir='LR', size='8,5')

f.attr('node', shape='doublecircle')
f.node('LR_0')
f.node('LR_3')
f.node('LR_4')
f.node('LR_8')

f.attr('node', shape='circle')
f.edge('LR_0', 'LR_2', label='SS(B)')
f.edge('LR_0', 'LR_1', label='SS(S)')
f.edge('LR_1', 'LR_3', label='S($end)')
f.edge('LR_2', 'LR_6', label='SS(b)')
f.edge('LR_2', 'LR_5', label='SS(a)')
f.edge('LR_2', 'LR_4', label='S(A)')
f.edge('LR_5', 'LR_7', label='S(b)')
f.edge('LR_5', 'LR_5', label='S(a)')
f.edge('LR_6', 'LR_6', label='S(b)')
f.edge('LR_6', 'LR_5', label='S(a)')
f.edge('LR_7', 'LR_8', label='S(b)')
f.edge('LR_7', 'LR_5', label='S(a)')
f.edge('LR_8', 'LR_6', label='S(b)')
f.edge('LR_8', 'LR_5', label='S(a)')

f.view()

从源开始,它应该给出以下输出:

但是,当我运行代码时,我会得到一堆错误:

代码语言:javascript
运行
复制
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
~\Anaconda3\lib\site-packages\graphviz\backend.py in run(cmd, input, capture_output, check, quiet, **kwargs)
    146     try:
--> 147         proc = subprocess.Popen(cmd, startupinfo=get_startupinfo(), **kwargs)
    148     except OSError as e:

~\Anaconda3\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors)
    708                                 errread, errwrite,
--> 709                                 restore_signals, start_new_session)
    710         except:

~\Anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
    996                                          os.fspath(cwd) if cwd is not None else None,
--> 997                                          startupinfo)
    998             finally:

FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden

During handling of the above exception, another exception occurred:

ExecutableNotFound                        Traceback (most recent call last)
<ipython-input-24-a4382ae6bf37> in <module>()
     10 g1.edge('A', 'B')
     11 
---> 12 g1.view()

~\Anaconda3\lib\site-packages\graphviz\files.py in view(self, filename, directory, cleanup)
    213         """
    214         return self.render(filename=filename, directory=directory, view=True,
--> 215                            cleanup=cleanup)
    216 
    217     def _view(self, filepath, format):

~\Anaconda3\lib\site-packages\graphviz\files.py in render(self, filename, directory, view, cleanup, format, renderer, formatter)
    186             format = self._format
    187 
--> 188         rendered = backend.render(self._engine, format, filepath, renderer, formatter)
    189 
    190         if cleanup:

~\Anaconda3\lib\site-packages\graphviz\backend.py in render(engine, format, filepath, renderer, formatter, quiet)
    181     """
    182     cmd, rendered = command(engine, format, filepath, renderer, formatter)
--> 183     run(cmd, capture_output=True, check=True, quiet=quiet)
    184     return rendered
    185 

~\Anaconda3\lib\site-packages\graphviz\backend.py in run(cmd, input, capture_output, check, quiet, **kwargs)
    148     except OSError as e:
    149         if e.errno == errno.ENOENT:
--> 150             raise ExecutableNotFound(cmd)
    151         else:  # pragma: no cover
    152             raise

ExecutableNotFound: failed to execute ['dot', '-Tpng', '-O', 'Graph.gv'], make sure the Graphviz executables are on your systems' PATH

我没安装好graphviz吗?这就是我从错误中了解到的。如果是这样的话,安装它的正确方法是什么?

有可能用networkx创建这样的图形吗?我也尝试过,但是没有创建这样一个节点的顺序表示。

非常感谢你的帮助,从我们家开始我就一直坐在这里。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-17 00:47:14

这条线中,我找到了将conda的安装promt更改为:

代码语言:javascript
运行
复制
conda install python-graphviz

这解决了我所有的问题!谢谢你@Blckknght的重要信息,它也安装在本地机器上,而不仅仅是在conda内部。我希望其他有同样努力的用户能在我们的精益求精中找到帮助。

票数 2
EN

Stack Overflow用户

发布于 2018-11-17 00:30:47

graphviz python模块不包括查看它创建的图形的程序。在文献资料中提到了这一点

要呈现生成的DOT源代码,还需要安装Graphviz (下载页面)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53347010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档