ImportError:无法导入pydot。您必须为`pydotprint`安装pydot和graphviz才能工作

时间:2017-12-02 07:15:36

标签: keras graphviz importerror pydot

我见过类似的问题,但也没有解决,所以我决定问。

我正在尝试使用

在keras中可视化我的模型
from keras.utils import plot_model
plot_model(model, to_file='model.png')

首先,它显示错误

ImportError: Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.

因此,我通过Anaconda安装了pydot和graphviz,并使用

激活我的环境
conda install -c https://conda.binstar.org/t/TOKEN/j14r pydot
conda install -c https://conda.binstar.org/t/TOKEN/j14r graphviz

然后,我关闭spyder并重新打开它。当我运行代码片段时,它仍然显示相同的错误。 我错过了什么?

17 个答案:

答案 0 :(得分:7)

似乎您正在使用Windows。在这种情况下,请参见this SO Q&A stream 和/或this Keras issue on gitub

以下两个来源均提示,似乎存在安装错误和/或路径错误。我在所有相关软件包上使用了pip uninstall,然后:

pip install pydot
pip install pydotplus
pip install graphviz

然后:

  • here下载并安装graphviz二进制文件
  • 在系统PATH中的graphviz bin文件夹中添加路径

我正在Windows myscript.py窗口中运行python脚本cmd。我必须关闭并重新打开它才能刷新PATH,但随后plot_model()的输出结果就很好了。

答案 1 :(得分:3)

从以下位置找到解决方案:https://github.com/XifengGuo/CapsNet-Keras/issues/69#issuecomment-483273641

我遵循了卸载和重新安装pydot + pydotplus的建议,并且使用Anaconda 3成功解决了Windows 10计算机上的问题。

conda uninstall pydot
conda uninstall pydotplus
conda uninstall graphviz

然后

conda install pydot
conda install pydotplus

注意:安装pydot还会安装graphviz

答案 2 :(得分:2)

使用next命令安装它们:

sudo apt install python-pydot python-pydot-ng graphviz 

答案 3 :(得分:1)

以下命令为我解决了问题

  1. 点安装pydot
  2. 点安装pydotplus
  3. sudo apt-get install graphviz

答案 4 :(得分:1)

这对我有用

import keras.utils.vis_utils
from importlib import reload
reload(keras.utils.vis_utils)


from keras.utils.vis_utils import plot_model    
plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True)

答案 5 :(得分:0)

即使安装了pydotpydotplusgraphviz之后,我仍然遇到dot cannot be found in environment PATH的错误

所以我从https://graphviz.gitlab.io/download/安装了graphviz-2.38.msi

但是,问题仍然存在,直到我从**keras.utils.plot_model**切换到**tf.keras.utils.plot_model**

See image, Plot model now works

答案 6 :(得分:0)

我通过安装解决了这个问题:

conda install graphviz
conda install pydot
conda install pydotplus

PS:我用以下命令调用了 plot_model:

from tensorflow.keras.utils import plot_model

现在可以使用了。

答案 7 :(得分:0)

在 win10 anaconda3 上 以管理员身份运行启动命令提示符 然后

conda install graphviz

这为您提供了 graphviz2.38 的工作原理。 这击败了从 https://graphviz.gitlab.io/download/#windows 下载安装程序的方式,后者在我的机器上不起作用。 然后你可以 pip install pydot 以确保你拥有它。 然后重新启动内核,它应该没问题。 如果不, pip install graphviz,因为它似乎是一个必要的python包装器。 我还在上面的 pip intsall pydot-ng pydotplus 命令之前尝试了 conda install。他们当时没有帮助。

答案 8 :(得分:0)

它在Spuder IDE中有效。主要思想是减少导入的库的数量。

from keras.utils.vis_utils import pydot
from keras.utils.vis_utils import plot_model

plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)

答案 9 :(得分:0)

在Windows 10 Anaconda上使用TensorFlow 2.3.0,以下(最终)对我有用:

  1. 安装Graphviz 32 bit(64位无效)
  2. 将Graphviz路径C:\Program Files (x86)\Graphviz\bin添加到系统和用户的PATH环境变量中
  3. 安装pydot-ng,它是TensorFlow 2.3.0使用的preferred pydot library
from tensorflow.keras.utils import plot_model

# model = Model(...)

plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)

答案 10 :(得分:0)

对于jupyter笔记本,请在安装要求后重新启动笔记本。它对我有用。

答案 11 :(得分:0)

尝试一下。

import keras
import pydot
import pydotplus
from pydotplus import graphviz
from keras.utils.vis_utils import plot_model
from keras.utils.vis_utils import model_to_dot
keras.utils.vis_utils.pydot = pydot

这对我有用。签出-> https://github.com/XifengGuo/CapsNet-Keras/issues/69

答案 12 :(得分:0)

这对我有用:

在我的虚拟环境中安装(Python 3):

pip3 install pydot_ng

在计算机级别安装(如果仅在环境中安装则不起作用)

sudo apt-get install graphviz

要导入它:

import pydot_ng as pydot

答案 13 :(得分:0)

这些命令对我有用。我做到了:

conda install -c https://conda.binstar.org/t/TOKEN/j14r pydot
conda install -c https://conda.binstar.org/t/TOKEN/j14r graphviz
sudo apt install python-pydot python-pydot-ng graphviz 

答案 14 :(得分:0)

重启内核为我解决了这个问题,不需要pydot-ng。

答案 15 :(得分:0)

对我来说,我要做的就是安装graphviz和pydot:

在Python3上:

pip3 install pydot-ng
pip3 install graphviz

在Python2上:

pip3 install pydot-ng
pip3 install graphviz

这为我解决了错误。

答案 16 :(得分:-3)

import tensorflow as tf
tf.keras.utils.plot_model(
    model,
    to_file='model.png',
    show_shapes=False,
    show_layer_names=True,
    rankdir='TB',
    expand_nested=False,
    dpi=96
)