Python PyCallGraph异常

标签 python python-3.x pycallgraph

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

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 中。请参阅this Stack Overflow answer有关修改 PATH 的更多信息。

关于Python PyCallGraph异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49273634/

相关文章:

python - 保存电子邮件附件(python3、pop3_ssl、gmail)

Python - 通过 enumerate() 迭代和替换列表索引

python - django 中的 PyCallGraph 中间件

Python:无法从json获取数据并转换为列表

python - 处理两个列表,逐行迭代并连接值

突然崩溃后Python文件为空

python - 为什么 'is' 运算符说这些方法不一样?

python - 从字典中向 pandas 数据框添加新列

python - C :\Python27\python. exe: 无法打开文件 '/cygdrive/c/Python27/Scripts/Program' : [Errno 2] 没有这样的文件或目录