Python

【Python】dtreeviz使用時にExecutableNotFound: … ,make sure the Graphviz executables are on your systems’ PATHが出たときの対処

投稿日:

概要

Pythonの決定木の可視化でビジュアルに優れたdtreevizパッケージのメソッドを使用したところ表題のエラーが発生したため、その対処方法についてメモする。

症状

まず、決定木の可視化でdtreevizを使用しようと思い、windows10上に構築していたAnacondaの環境に以下を行いました。

  • pip install dreeviz
  • conda install graphviz

そして、jupyterを起動してdtreevizの描画メソッドを使用したところ、以下が発生しました。

ExecutableNotFound: failed to execute ['dot', '-Tsvg', '-o', 'C:\\Users\\UserName\\AppData\\Local\\Temp\\DTreeViz_15916.svg', 'C:/Users/UserName/AppData/Local/Temp\\DTreeViz_15916'], make sure the Graphviz executables are on your systems' PATH

ネットの情報を見る限り、make sure the Graphviz executables are on you systems’ PATHが出るときは環境変数に追加すれば解消するよ、という感じなのでgraphvizの実行パスをシステム環境変数に追加して再度トライしました。

パス
C:\Users\UserName\Anaconda3\pkgs\graphviz-2.38-hfd603c8_2\Library\bin

結果

相変わらず同じエラーが発生しました。仕方がないので試行錯誤しながらエラー対処を開始しました。

対処その1

condaでgraphvizをインストールしたのが良くなかったのかと思いgraphvizのサイトから手動でgraphvizのパッケージを取得してローカルへ展開後、再度graphvizの実行ファイルのパスをシステム環境変数に追加しました。

結果

同じエラーが出で解消せず。

対処その2

Anacondaの環境がシステム環境変数に追加したgraphvizを全く認識していない感じでしたので、 Anaconda環境を使うのを諦めました。 

こちらで作ったPython+venvベースの環境上に再度以下ので順でインストールし直しました。

  • pip install dreeviz
  • conda install graphviz
  • 手動でgraphvizのサイトからパッケージをダウンロードして展開&システム環境変数のPATHへ追加

結果

エラーなく動きました。

まとめ

よくわかりませんが、Anaconda環境にpipでdtreevizをいれてその後、graphvizを入れてもうまく動かなかったです。
Python+venvならうまく動きました。

-Python

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Python smtplibでメール送信

Contents1 目的2 環境3 コード 目的 pythonからSMTPサーバにメールを送信する。 環境 Windows10Python 3.7.3 (Anaconda 4.7.10) コード # …

VSCodeから外部のJupyterへ接続する

Contents1 目的2 環境3 Step1 : Jupyterのconfig設定4 Step2 : VSCodeからの接続5 Step3 : Jupyterを使用して確認6 まとめ 目的 自端末の …

CentOSからAnacondaアンインストール

Contents1 目的2 Step1 : .pyenvの削除3 Step2 : bash_profileのpathの削除4 Step3 : .condaの削除5 Step4 : 確認 目的 以下の記 …

【Python】BeautifulSoupでtableが最初の数行しか取得できない場合の対処

Contents1 概要2 環境3 発生事象3.0.1 実行結果4 対処法 概要 PythonでWebスクレイピングをするときの定番であるBeautifulsoupですが、tableを取得しようとした …

Pythonの文字列操作

Contents1 目的2 文字列の連結3 文字列の抽出4 文字列の抽出(スライス)5 文字列の繰り返し6 文字数取得7 文字列の分割8 文字列の結合9 文字列の置換 目的 pythonの文字列操作に …

言語切り替え

カテゴリー