Graphvizのインストールにつまる声を良く聞く+web上のリファレンスが何故かパスを通すところまでで終わっていることが多いのでまとめておきます。
結論から言うと、Graphviz自体はPythonパッケージではないので、少なくともWinのAnaconda環境ではPython用ラッパークラスのインストールが必要です。
しかも、Python用ラッパーには本体が含まれていないのでPython用ラッパーのインストールとは別に本体のインストールが必要です。なんでこんなトリッキーなんだ・・・
手順
公式から本体をダウンロードして解凍後、任意の場所に解凍したフォルダを置いてパスを通します。Winの場合、環境変数>ユーザー環境変数orシステム環境変数(Pythonのパスが通ってる方)のPATH変数にGraphvizフォルダの下にあるdot.exe
のパスの値を追加で貼り付けてください。
C直下に置いた場合はC:\Users\ユーザー名\graphviz\bin
あるいはC:\Users\ユーザー名\graphviz2.38\release\bin
みたいな感じです。
パスを通したら、pipでpython用ラッパーをインストールします(重要)。
$ pip install graphviz
その後、Jupyterなどで以下のコードを打ってエラーが返ってこなければ成功です。
※公式ドキュメントから引用したソースです。
from graphviz import Digraph
dot = Digraph(comment='The Round Table')
dot
ついでにグラフ描写までテストしたい人は以下も続けて実行してみてください。
dot.node('A', 'King Arthur')
dot.node('B', 'Sir Bedevere the Wise')
dot.node('L', 'Sir Lancelot the Brave')
dot.edges(['AB', 'AL'])
dot.edge('B', 'L', constraint='false')
print(dot.source)
出力結果1
// The Round Table digraph { A [label="King Arthur"] B [label="Sir Bedevere the Wise"] L [label="Sir Lancelot the Brave"] A -> B A -> L B -> L [constraint=false] }
その後、以下のコードを実行して出力結果2のような図が描写されればOKです。
dot.render('test-output/round-table.gv', view=True)
注意点
Graphviz本体はcondaでもインストールできます。ですがcondaでインストールしようとすると、パスがうまく通りませんでした。これはたぶん環境によると思うので上手くいく人は上手くいくと思います。
また、英語があまり強くないので断言できませんが、公式からダウンロードできるのは本体のみのようです。
Python-graphvizはpipでインストールすることを推奨されています。以下の公式ドキュメントやPyPIもご参照ください。
なお、Python-graphvizの最新バージョンは2019年9月現在0.13ですが、本体の安定バージョンは2.38で、当たり前ですが別物なのでバージョンがずれています。注意しましょう。