Python PyCallGraphException

Python PyCallGraphException

我从他们自己的网站上复制了一个例子,但我不知道如何让它工作。

Link to their example

这是我的代码:

from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput


class Banana:

    def eat(self):
        pass

class Person:

    def __init__(self):
        self.no_bananas()

    def no_bananas(self):
        self.bananas = []

    def add_banana(self, banana):
        self.bananas.append(banana)

    def eat_bananas(self):
        [banana.eat() for banana in self.bananas]
        self.no_bananas()


def main():
    graphviz = GraphvizOutput()
    graphviz.output_file = 'basic.png'

    with PyCallGraph(output=graphviz):
        person = Person()
        for a in xrange(10):
            person.add_banana(Banana())
        person.eat_bananas()

if __name__ == '__main__':
    main()

这是我在尝试编译时收到的错误:

  File "test_pycallgraph.py", line 43, in <module>
    main()
  File "test_pycallgraph.py", line 35, in main
    with PyCallGraph(output=graphviz):

    'The command "{}" is required to be in your path.'.format(cmd))
pycallgraph.exceptions.PyCallGraphException: The command "dot" is required to be in your path.

您要使用的库似乎对 dot 命令进行了内部调用。但是由于 dot 不在您的 PATH 中,库无法找到 dot 可执行文件并引发异常。

您很可能需要安装 dot,这是一个用于绘制有向图的命令行工具。确保已安装它。

如果您已经安装了它,请确保将它的位置添加到您的 PATH 中。有关修改 PATH 的详细信息,请参阅 this Stack Overflow answer

之前的回答有点太笼统了。您需要找到 dot.exe,对我来说它在 C:\Program Files (x86)\Graphviz2.38\bin 中,所以我转到了以下内容: 控制面板 > 系统 > 高级系统设置 > 环境变量...然后在系统变量的底部框中,找到路径,select 它和 select 编辑,然后 select 新建并粘贴中的路径。现在关闭并重新打开 cmd.exe 并看到 'dot' 中的简单类型并按回车键。如果没有错误,说明路径设置正确。