Python pydot和graphviz错误:无法';t导入dot_解析器,将无法加载点文件
当我用pydot运行一个非常简单的代码时Python pydot和graphviz错误:无法';t导入dot_解析器,将无法加载点文件,python,python-2.7,graphviz,pydot,Python,Python 2.7,Graphviz,Pydot,当我用pydot运行一个非常简单的代码时 import pydot graph = pydot.Dot(graph_type='graph') for i in range(3): edge = pydot.Edge("king", "lord%d" % i) graph.add_edge(edge) vassal_num = 0 for i in range(3): for j in range(2): edge = pydot.Edge("lord%d" % i,
import pydot
graph = pydot.Dot(graph_type='graph')
for i in range(3):
edge = pydot.Edge("king", "lord%d" % i)
graph.add_edge(edge)
vassal_num = 0
for i in range(3):
for j in range(2):
edge = pydot.Edge("lord%d" % i, "vassal%d" % vassal_num)
graph.add_edge(edge)
vassal_num += 1
graph.write_png('example1_graph.png')
它会向我打印错误消息:
Couldn't import dot_parser, loading of dot files will not be possible.
我使用的是python 2.7.3,解决方案不是从某个地方安装pydot,而是从官方ubuntu存储库安装“python pydot”。回答
pydot>=1.1
:
(上游)pydot
的不兼容性已由修复,因此将修改pydot>=1.1
答案适用于
pydotpydot使用pyparsing中的私有模块变量(_noncomma)。下面的差异将其修复为用于pyparsing 2.0.1:
diff --git a/dot_parser.py b/dot_parser.py
index dedd61a..138d152 100644
--- a/dot_parser.py
+++ b/dot_parser.py
@@ -25,8 +25,9 @@ from pyparsing import __version__ as pyparsing_version
from pyparsing import ( nestedExpr, Literal, CaselessLiteral, Word, Upcase, OneOrMore, ZeroOrMore,
Forward, NotAny, delimitedList, oneOf, Group, Optional, Combine, alphas, nums,
restOfLine, cStyleComment, nums, alphanums, printables, empty, quotedString,
- ParseException, ParseResults, CharsNotIn, _noncomma, dblQuotedString, QuotedString, ParserElement )
+ ParseException, ParseResults, CharsNotIn, dblQuotedString, QuotedString, ParserElement )
+_noncomma = "".join( [ c for c in printables if c != "," ] )
class P_AttrList:
我分叉了pydot存储库[1],应用了Gabi-Davar补丁和一些更改来支持python-3。该软件包在PyPI[2]中提供
干杯
- [1]
- [2]
在pip repo中有一个名为pydot2的新包,它可以与pyparsing2一起正常工作。我无法降级我的包,因为matplotlib依赖于较新的pyparsing包
注意:来自macports的python2.7在OSX小牛上实现了以下功能。。。我得到了同样的错误,但在底部还有一个投诉,即graphviz可执行文件不存在。。。我想问题是我在安装其他模块之前安装了graphviz
brew uninstall graphviz
brew install graphviz
现在至少还有两个版本支持PyParsing-2和Python-3:
- 一个漂亮的特拉维斯机器人和幻想。但是,您需要将其文件夹名称从
site packages\pydotplus
更改为site packages\pydot
,以便它与导入pydot的现有程序一起工作
- 由遗憾的是,它不起作用强>
- 由James Mills从官方pydot谷歌代码页链接到
Python3兼容性的一个分支
- 下面是David Villa的pydot2的工作链接,它工作正常:
$sudo pip卸载pydot
$sudo pip安装pydot2
请参阅以下链接:这对我来说很有效(在Anaconda上使用Mac OS X 10.9和Python 2.7.10):
那么
pydot安装后,Pyparsing会被降级(从2.x到1.5.7)。未来的谷歌:这使我能够正确安装和导入Theano。我又遇到了这个问题,我的上述解决方案不起作用。如果这对您来说是正确的,并且您也在Mac电脑上与El Capitan一起使用Anaconda,请尝试以下方法:
conda install --channel https://conda.anaconda.org/RMG graphviz`
conda install --channel https://conda.anaconda.org/RMG pydot
您需要将pyparsing从版本2.x降级到版本1.5.7,以使pydot正常工作
对于使用Conda的win-64,这对我来说很有用:
conda install -c https://conda.anaconda.org/Trentonoliphant pyparsing=1.5.7
然后我禁用/卸载了2.x版本,并在脚本中重新加载了pyparsing:
pyparsing = reload(pyparsing)
pydot = reload(pydot)
要检查是否正在运行正确的版本,请执行以下操作:
print pyparsing.__version__
当其他解决方案不起作用时,这是一种快速而肮脏的解决问题的方法:
这个例子来自Ubuntu 16.04上的Python2.7
编辑文件python2.7/site-packages/keras/utils/visualize_util.py并注释下面的代码段
if not pydot.find_graphviz():
raise ImportError('Failed to import pydot. You must install pydot'
' and graphviz for `pydotprint` to work.')
find_graphviz()在pydot的较新版本上是多余的,上面的调用不起作用。我在这里看到的经过多次尝试后最后做了什么(它对networkx起作用的伪序列):
我也遇到了这个问题,pydot==1.0.28,而pyparsing==2.2.0。我从谷歌下载了最新的Pydot1.2.3(tar.gz),然后离线安装,解决了这个问题。当我在ubuntu 14.04中更新pydot时,它说Pydot1.0.28是最新版本。因此,我从google下载了1.2.3版本。我安装了NetworkX、GraphViz和pydot,但无法使GraphViz功能与NetworkX配合使用(例如,NetworkX示例失败)。我不断得到:全局名称“dot_parser”没有定义。您的解决方案解决了此问题。此外,如果您使用python setup.py install安装了软件包,那么sudo pip uninstall
也不起作用。在这种情况下,请遵循解决方案。这至少在我的山狮OSX上是这样的Macsudo
显然并不总是必要的,就像你在使用virtualenv一样。除此之外,这对我很有用!在Ubuntu12.04中,我在安装byparsing时遇到了这个错误:“请求的pyparsing==1.5.7,但安装的是版本2.0.1”。然后,上面的错误仍然发生,因此解决方案是指定python egg的下载位置:sudo pip install-Iv为什么不pip install pyparsing==1.5.7
?截至2013年8月25日pip install python pydot
对我不起作用(未找到发行版)pip安装pydot
does。所以我不认为pydot不一定是非官方的。也许你是通过操作系统发行版安装的?不是pip,sudo-apt-get-install-python-pydot
为我做的。这可能会起作用,因为Ubuntu目前在1.5.2版本中有python-python-parsing
,这避免了上面列出的版本不兼容。我使用了上面的修复程序,从那以后就再也没有问题了。谢谢不幸的是,在Ubuntu中,Saucy pyparsing已经升级,但是pydot没有得到适当的修补。我已经提交了一张修复Ubuntu包的罚单:为了完整性,pydot报告了这个问题以及@Gabi Davar.IMHO提到的修复,这个答案应该在pyparsing降级的想法上考虑。networkx也非常适合我。谢谢仍然给出此错误,但dot_解析器错误消失。您必须为pydotprint
安装pydot才能工作。PyPI页面似乎已关闭。那太糟糕了!你知道为什么吗?pip软件包好像坏了<代码> PIP安装…<代码>失败,中间没有显式错误。看起来清单和实际文件不匹配。我签出git repo,然后mv README.rst README
然后python setup.py install
。这对我有效:-)链接已断开,但pip install pydot2
有效,而此链接有效。pip install pydot
pyparsing = reload(pyparsing)
pydot = reload(pydot)
print pyparsing.__version__
if not pydot.find_graphviz():
raise ImportError('Failed to import pydot. You must install pydot'
' and graphviz for `pydotprint` to work.')
apt-get remove python-pydot
pip install pydotplus
apt-get install libcgraph6
apt-get install python-pygraphviz
# pip freeze | grep pydot
pydotplus==2.0.2
# pip freeze | grep pyparsing
pyparsing==2.2.0
# pip freeze | grep graphviz
pygraphviz==1.2
# python -c 'import pydotplus'
#