自分用の備忘録ですが, 同じとこで躓いているひとの役に立てれば幸いです.
環境
- 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はバイナリのインストールとパスを通すのが面倒ですね.