Не удается построить граф граната (pygraphviz не найден)

Я не могу понять, что происходит, но я больше не могу строить график граната изнутри PyCharm. Я использую conda в качестве менеджера пакетов и пошел, как обычно:

conda install graphviz
conda install python-graphviz

но каждый раз, когда я вызываю model.plot() изнутри PyCharm, я получаю

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_umd.py", line 198, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/Users/.../xai/import.py", line 36, in <module>
    model.plot()
  File "pomegranate/BayesianNetwork.pyx", line 281, in pomegranate.BayesianNetwork.BayesianNetwork.plot
ValueError: must have pygraphviz installed for visualization

Я, очевидно, уже пытался установить pygraphviz, но, похоже, это не имеет значения.


person Thomas Tiotto    schedule 05.12.2018    source источник
comment
Я также пробовал рисовать с внешней консоли Python, но получаю ту же самую ошибку, поэтому проблема не связана с PyCharm.   -  person Thomas Tiotto    schedule 05.12.2018
comment
Есть еще радость....?   -  person jtlz2    schedule 09.04.2020


Ответы (2)


Я только что столкнулся с той же проблемой. Я решил это, установив пакет разработки graphviz. В репозитории openSUSE он называется graphviz-devel.

В его описании сказано:

Пакет graphviz-devel содержит все необходимое для разработки программ, использующих библиотеки graphviz, включая man3-страницы.

person Baumann    schedule 29.04.2020

Столкнулся с похожей проблемой, и хотя решение от @Baumann у меня не сработало, установка matplotlib устранила мою проблему (python 3.6 под Win10 и WSL).

pip установить matplotlib

Предыстория для этого предложения: код граната в BayesianNetwork.pyx перехватывает несколько исключений импорта с одним и тем же оператором try (см. код ниже, доступный также на github, последняя фиксация f116357, и в моем случае, несмотря на то, что я установил pygraphviz без установки matplotlib, возникло неприятное исключение.

строка 40 и далее:

try:
    import tempfile
    import pygraphviz
    import matplotlib.pyplot as plt
    import matplotlib.image
except ImportError:
    pygraphviz = None

затем строка 222 и далее:

if pygraphviz is not None:
    G = pygraphviz.AGraph(directed=True)

    for state in self.states:
        G.add_node(state.name, color='red')

    for parent, child in self.edges:
        G.add_edge(parent.name, child.name)

    if filename is None:
        with tempfile.NamedTemporaryFile() as tf:
            G.draw(tf.name, format='png', prog='dot')
            img = matplotlib.image.imread(tf.name)
            plt.imshow(img)
            plt.axis('off')
    else:
        G.draw(filename, format='pdf', prog='dot')

else:
    raise ValueError("must have pygraphviz installed for visualization")
person matt__chv    schedule 24.08.2020