自分用の備忘録ですが, 同じとこで躓いているひとの役に立てれば幸いです.
環境
- OS: Windows 10
- Miniconda: Miniconda3-4.5.4 (64bit)
- Python: 3.6
- pydot: 1.2.4
- graphviz: 2.38
- python-graphviz: 0.8.4
現象
Anaconda prompt
を開く.
conda
を使用して, python-graphviz
とpydot
をインストールした仮想環境を作成.
> conda create -n dot python=3.6 pydot python-graphviz
作成した仮想環境のシェルに入り, python
インタプリタを実行して,
pydot.Dot.create(pydot.Dot())
を実行すると,
FileNotFoundError: [WinError 2] "dot.exe" not found in path.
が発生する.
> conda activate dot
> python
>>> import pydot
>>> pydot.Dot.create(pydot.Dot())
FileNotFoundError: [WinError 2] "dot.exe" not found in path.
pydot.Dot.create(pydot.Dot())
を直接実行することもあるとは思いますが,
Keras
のモデルの可視化に使われているのでそこでもエラーが出て実行されないです.
(他の影響範囲は知らないので詳しい方は教えてください)
原因
conda
でgraphviz
をインストールするとパスが通っているところには, dot.bat
(dot.exe
のラッパー) だけインストールされる.
pydot
がdot.exe
しか探さないので, conda
ではgraphviz
のバイナリはdot.bat
でインストールされるが, 実行できない.
対処
-
dot.exe
のあるとこにパスを通す. (リンクでも可?) -
pydot.py
を編集し,dot.bat
をさがすように変更する. (https://github.com/ContinuumIO/anaconda-issues/issues/1666) -
conda
を使わない.
まとめ
おそらく近いうちに修正されると思いますが, このようにすれば直すことができます.
conda
を使わないという対処は, デフォルトのパッケージマネージャがあるUbuntuなどであればいいですが, Windowsはバイナリのインストールとパスを通すのが面倒ですね.