pygraphviz не имеет атрибута AGraph - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь построить приложение для визуальной визуализации сети. Тем не менее, моя установка pygraphviz, кажется, доставляет мне проблемы. Каждый раз, когда я пытаюсь запустить код, он выдает ошибку «AttributeError: модуль 'pygraphviz' не имеет атрибута 'AGraph'"

Я использую дистрибутив Anaconda и пытался установить pygraphviz по нескольким каналам, но он всегда выдавал одну и ту же ошибку. В итоге я вручную загрузил файл .whl и установил его с помощью pip, как показано в:

как установить pygraphviz на windows 10 64bit

Я использую 64-битную машину с Windows 10 и Python версии 3.4. Вот пример кода, который я пытался запустить (скопированный из папки примеров в установке pygraphviz):

from __future__ import absolute_import
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division

import pygraphviz as pgv

A=pgv.AGraph(directed=True,strict=True,rankdir='LR')

A.add_node(1,color='red') 
A.add_node(5,color='blue')

A.add_edge(1,2,color='green')
A.add_edge(2,3)
A.add_edge(1,3)
A.add_edge(3,4)
A.add_edge(3,5)
A.add_edge(3,6)
A.add_edge(4,6)

A.graph_attr['epsilon']='0.001'
print(A.string()) # print dot file to standard output
A.layout('dot') # layout with dot
A.draw('foo.ps') # write to file

Это дает мне ошибку «AttributeError: модуль« pygraphviz »не имеет атрибута« AGraph »». Любая помощь будет оценена!

1 Ответ

0 голосов
/ 19 мая 2019

В моем случае мне пришлось заменить следующие строки в моей старой программе (pygraphviz, работающей с python 2.7):

my_graph = graphviz.AGraph(id="my_graph", name="my_graph", file=self.fileName)

my_graph.layout(prog='dot')

my_graph.draw(path="my_graph3.svg", format="svg")

с:

from graphviz import Source, render

my_graph = graphviz.Digraph(name="my_graph", engine='dot')
my_graph.src = Source(srcStr, filename=None, directory=None, format='svg', engine='dot', encoding='utf-8')
my_graph.src.render('dot', 'svg', 'my_graph3.svg',renderer='cairo', formatter='cairo')

srcStr - это строка типа:

digraph "pet-shop" {
    graph [rankdir=LR]
    node [shape=plaintext]
    edge [arrowhead=vee arrowsize=2]
    parrot
    dead
    parrot -> dead
}

Хотя я думал, что это создаст файл my_graph3.svg, на самом деле он создает папку svg с файлом 'dot.cairo.cairo.svg' внутри.

Кроме того, потребовалось много проб и ошибок, чтобы получить это, поэтому я публикую его, если это поможет. Любые комментарии, связанные с улучшением параметров приветствуются.

...