web-dev-qa-db-ja.com

pydotおよびgraphvizエラー:dot_parserをインポートできませんでした。ドットファイルの読み込みはできません。

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, "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を使用しています

107
Sadik

pydot >= 1.1の回答:

(アップストリーム)pydotの非互換性は 6dff94b3f1 によって修正されたため、pydot >= 1.1pyparsing >= 1.5.7と互換 になります。


pydot <= 1.0.28に該当する回答:

これに出くわした他の人にとっては、1.xから2.xリリースへのpyparsingの変更によるものです。 pipを使用してpydotをインストールするには、最初に古いバージョンのpyparsingをインストールします。

pip install pyparsing==1.5.7
pip install pydot==1.0.28

pyparsingを使用してpipをインストールせず、代わりにsetup.pyを使用した場合は、この solution を見てパッケージをアンインストールしてください。 @qtipsに感謝します。

220
Jonathan

Pydot2で正しく機能するpydot2と呼ばれるpipリポジトリに新しいパッケージがあります。 matplotlibは新しいpyparsingパッケージに依存しているため、パッケージをダウングレードできませんでした。

注:macportsのpython2.7

57
Dana the Sane

pydotは、pyparsingのプライベートモジュール変数(_noncomma)を使用しました。以下のdiffは、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:
21
Gabi Davar

Pydotリポジトリ[1]を分岐し、Gabi Davarパッチとpython-3をサポートするためのいくつかの変更を適用しました。パッケージはPyPIで利用可能です[2]。

乾杯

7
david villa

$ Sudo pip uninstall pydot

$ Sudo pip install pydot2

次のリンクを参照してください: http://infidea.net/troubleshooting-couldnt-import-dot_parser-loading-of-dot-files-will-not-be-possible/

6
Jing Zhang

解決策は、どこかからpydotをインストールするのではなく、公式のUbuntuリポジトリから「python-pydot」をインストールすることでした。

5
Sadik

再び問題が発生し、上記の解決策は機能しませんでした。それがあなたに当てはまり、El Capitanを搭載したMacでAnacondaを使用している場合は、これを試してください:

conda install --channel https://conda.anaconda.org/RMG graphviz`
conda install --channel https://conda.anaconda.org/RMG pydot
3
scottlittle

現在、PyParsing-2とPython-3をサポートしているように見える少なくとも2つのバージョンがあります。

  • PyDotPlus by Carlos Jenkins Nice travis buildbot and fancy documentation 。ただし、pydotをインポートする既存のプログラムを使用するには、フォルダー名をsite-packages\pydotplusからsite-packages\pydotに変更する必要があります。
  • pydot3k by bmcorser残念ながら、機能しませんでした!
  • prologic/pydot 公式のpydot GoogleコードページからリンクされているJames Millsによる...

    Python 3互換性のためのブランチ

  • そして、これは正常に動作するDavid Villaのpydot2への有効なリンクです: https://pypi.python.org/pypi/pydot2/1.0.32
3
Mark Mikofski

これは私のために働いた(Anaconda上のPython 2.7.10を搭載したMac OS X 10.9):

conda uninstall pydot

次に、

conda install pydot

Pyparsingは、pydotのインストール時に(2.xから1.5.7に)ダウングレードされます。将来のGoogle社員:これにより、Theanoを正しくインストールおよびインポートできました。

2
scottlittle

私がここで見たものから非常に多くの試行の後、私が最後にしたこと(networkxで動作するための擬似シーケンス):

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'
#
2
sten

また、pyparsing == 2.2.0の間に問題と私のpydot == 1.0.28に遭遇しました。 Googleから最新のpydot 1.2.3(tar.gz)をダウンロードして、オフラインでインストールすることで問題を修正しました。 ubuntu 14.04でpydotを更新したとき、pydot 1.0.28が最新バージョンであると述べました。したがって、Googleから1.2.3バージョンをダウンロードします。

1
Cna

OSX Mavericksでは、次のトリックが行われました...同じエラーが発生しましたが、下部にはgraphviz実行可能ファイルが存在しないという苦情もありました...他のモジュールの前にgraphvizをインストールしていたと思いますか?

brew uninstall graphviz
brew install graphviz
1
ecordo

他のソリューションが機能しない場合、これは問題を解決するための迅速で汚い方法です:

この例は、Ubuntu 16.04のpython 2.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では冗長であり、上記の呼び出しは機能しません。

1
Totoro

Pydotを正しく動作させるには、pyparsingをバージョン2.xからバージョン1.5.7にダウングレードする必要があります。

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__
0