PydotPlus内でインポートしたときにGraphVizが機能しない( `GraphVizの実行可能ファイルが見つかりません`)


17

私はこれらのパッケージをかなり長い間動作させるように努めてきましたが、成功しませんでした。基本的にエラーは:

GraphViz's Executables not found

編集:私はlog元々エラーのある端末を投稿していませんでした。私はUbuntu今使用しているので、過去に取得したものとまったく同じエラーを再現することはできません(1年前、これまでははるかに遠い...)。ただし、現在の設定で同様のエラーが発生しています。で仮想環境を使用しているときでもpipenv。エラーは、@张乾元の回答に記載されている行に起因するようです:

Traceback (most recent call last):
  File "example.py", line 49, in <module>
    Image(graph.create_png())
  File "/home/philippe/.local/lib/python3.6/site-packages/pydotplus/graphviz.py", line 1797, in <lambda>
    lambda f=frmt, prog=self.prog: self.create(format=f, prog=prog)
  File "/home/philippe/.local/lib/python3.6/site-packages/pydotplus/graphviz.py", line 1960, in create
    'GraphViz\'s executables not found')
pydotplus.graphviz.InvocationException: GraphViz's executables not found

私がインストールしようとしたGraphViz2種類の方法を経由して:経由pip install graphvizとを通じて.msiパッケージ(ともインストールしようpydotpydotplusgraphviz多くの異なる順序で)。

私が実行しようとしているコードは、単にIris Datasetのdot-to-pngコンバーターです。

from sklearn.tree import DecisionTreeClassifier
import sklearn.datasets as datasets
from sklearn.externals.six import StringIO
from sklearn.tree import export_graphviz

import pandas as pd
import pydotplus

from IPython.display import Image

iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns = iris.feature_names)
y = iris.target

dtree = DecisionTreeClassifier()
dtree.fit(df,y)

dot_data = StringIO()
export_graphviz(
    dtree, 
    out_file = dot_data,
    filled = True, 
    rounded = True,
    special_characters = True
)
graph_1 = pydotplus.graph_from_dot_data(dot_data.getvalue())
Image(graph_1.create_png())

Jupyter NotebooksとでAtom、システムが探しているように見えるGraphViz内部のpydotplusそれが指すように、~\Anaconda3\lib\site-packages\pydotplus\graphviz.py。それは逆にしてはいけませんか?

最後に、私はすでにを使用GraphVizしてシステムのパスを追加しようとしたことを指摘したいと思います。PATHC:\Users\Philippe\Anaconda3\Library\bin\graphviz


2
この質問をしていただきありがとうございます。
AturSams

これらの問題のあるインストールの問題に対処する最善の方法は、おそらくやのような独立した環境を使用することですがpipenv、まだ適切に確認していません。virtualenvDocker Containers
フィリップファナロ

回答:


15

参照:(Pythonの3.4)Graphvizの者の実行可能ファイルが見つからない graphvizのパッケージの窓#1666上のPATHに実行可能な追加しない graphvizのの#1357での問題 -それは(のために再発する問題だという PATH環境変数の設定でプログラム)。特定のバージョンをインストールするか、特定の順序でインストールするか、手動でPATHを追加すると、問題が解決します。

パッケージがPATHを正しく設定し、パッケージをアンインストールするときにそれ削除するのが最善です(そのため、PATHが長くなりすぎないように-通常は発生しません)。手動で設定すると、将来の破損を防ぎ、強制的に機能させますが、パッケージをアンインストールする場合は、余分なテキストを手動で削除する必要があります。

これら3つのリンクからのアドバイスは次のとおりです。

  1. pip install graphviz
  2. conda install graphviz

または

走る必要がある

conda install python-graphviz

の代わりに

pip install graphviz

これらのバインディングを取得するには、condaのGraphvizパッケージでも機能します。

または

  1. https://graphviz.gitlab.io/_pages/Download/Download_windows.htmlからgraphviz-2.38.msi(最新バージョンを使用)をダウンロードしてインストールし ます。

  2. パス変数を設定する

        (a)コントロールパネル>システムとセキュリティ>システム>システムの詳細設定>環境変数>パス>編集

        (b)「C:\ Program Files(x86)\ Graphviz2.38 \ bin」を追加します


それは私が投稿で私が説明したとおりです。そして、あなたが私がすでに見たり試したりしたと述べた他のリンクも。彼らもかなり古くなっているので、おそらく誰かがより良い解決策を考え出したのではないかと思いました。
フィリップファナロ2018

私は多分明日、私がpythonに関連しているすべてのものをアンインストールして何が起こるか見てみようと思います。
フィリップファナロ2018

上記のすべての方法をテストした後でも、GraphVizを実行できません
MonicaのRevolucion

@IggyPass、この回答はほぼ2年前のものです。上記の2番目のリンクを確認したところ、BRが閉じられています。修正が提供されます。第3のリンクだどうやら私が提示し第三の溶液、示唆まだ提供され、最新のサードパーティ製のコンパイル済みのバージョンを。最新バージョンはソースでのみ提供されており、自分でコンパイルする必要があります。新しいコンピュータの購入を待つ間、携帯電話を使用しています。残念ながら、それまでこの回答を更新することはできません。プリコンパイルされたバージョンとこれらの回答のほとんどは共通のテーマを共有しているため、システムに合わせてPATHを適切に設定する必要があります。
ロブ

5

私の場合、graphviz手動で実行可能ファイルを見つけることができますがanaconda3\Library\bin\graphviz、それでもGraphViz's Executables not foundエラーが発生します。

私は、zhangqianyuanの提案と、モジュールのインストールと使用の特定の順序python-graphvizここ広く議論されている公式のソリューション)に失敗しました。私が試さなかったのは、PATHシステム全体の変数を改ざんすることだけでした。

私にとってうまくいった方法は、これらの行を私のコードに(graphviz関連関数の前に)挿入することでした:

import os

os.environ['PATH'] = os.environ['PATH']+';'+os.environ['CONDA_PREFIX']+r"\Library\bin\graphviz"

これは汚い小さなハックですが、いくつかの利点があります。

  • PATH変更はローカルで、osモジュールがリロードされるまで有効です
  • モジュールスクリプトを変更する必要はありません
  • PATHシステム全体を変更する必要はありません

私はPython 3.7、Windows 10、Anacondaを使用しています。Graphvizはを使用してインストールされましたconda install python-graphvizが、この場合に違いはないと思います


2

Anacondaがある場合は、Condaマネージャーを使用できます。

Condaスタートパネルに入力し、Conda経由でインストールしてみます。

例えば:

pip3 install graphviz

1
(...)私はすでにこれを試しました...
フィリップファナロ

しかし、コンダマネージャーを介して?
fuwiak 2018

はい、私はそうしました、そしていくつかの異なる順序で。
フィリップファナロ2018

2

私のユースケースでうまくいったこと:でのモデル図の生成Django。ただし、他のアプリケーションのダイアグラムを生成するように拡張することもできます。

ファイルGraphVizからグラフを表示するためにをインストールしました.dotgraphviz.orgからインストールできます。

  1. プロジェクトに関連付けられたドットファイルを作成します。

    python manage.py graph_models -a > dotfile.dot

    または.dot、複数のアプリ用のファイルを作成することもできます。参考:Djangoのアプリケーションでデータベースダイアグラムを可視化するために、ジャンゴ・エクステンションを使用することにより、トーマス

  2. これで、表示する必要がありますdotfile.dot。では、それを画像としてどこに表示すればよいでしょうか?

    • ここで、アプリケーションのインストールされたパスでファイルを開きますgvedit.exe(の対応するファイルがわかりませんLinux)。
      • Windowsの場合:C:\Program Files (x86)\Graphviz2.38\bin\gvedit.exe
  3. ここまでで作成したファイルを実行gvedit.exeして開き.dotます。


1
  1. 検索:C:\Users\zhangqianyuan\AppData\Local\Programs\Python\Python36\Lib\site-packages\pydotplus

  2. 開いた graphviz.py

  3. 1925行目-1972行目を検索し、関数を検索します。

    def create(self, prog=None, format='ps'):
  4. 関数で:

    if prog not in self.progs:
        raise InvocationException(
            'GraphViz\'s executable "%s" not found' % prog)
    
    if not os.path.exists(self.progs[prog]) or \
            not os.path.isfile(self.progs[prog]):
        raise InvocationException(
            'GraphViz\'s executable "{}" is not'
            ' a file or doesn\'t exist'.format(self.progs[prog])
        )
  5. 2つのブロックの間にこれを追加します(Graphvizの実行可能パス)。

      self.progs[prog] = "C:/Program Files (x86)/Graphviz2.38/bin/gvedit.exe"`
  6. 結果を追加した後:

    if prog not in self.progs:
        raise InvocationException(
            'GraphViz\'s executable "%s" not found' % prog)
    
    self.progs[prog] = "C:/Program Files (x86)/Graphviz2.38/bin/gvedit.exe"
    
    if not os.path.exists(self.progs[prog]) or \
            not os.path.isfile(self.progs[prog]):
        raise InvocationException(
            'GraphViz\'s executable "{}" is not'
            ' a file or doesn\'t exist'.format(self.progs[prog])
        )
  7. 変更したファイルを保存すると、正常に実行できます。

  8. pngファイルは機能しないため、bmpファイルとして保存することをお勧めします。 写真はこちら


0

同じ問題が発生したため、pydotplusを個別にインストールし(pip3 install pydotplus)、pydotplusをインポートすると、すべてが正常に機能します。


0

私は同じ問題を抱えており、これと他のフォーラムで提案されたすべてを行いましたが、何もうまくいきませんでした。WindowsとPython 3を使用している場合、次の手順でこの問題を100%解決します。

  1. pydotplusconda経由でインストール:conda install pydotplus

  2. graphviz個別にインストールしますconda install python-graphviz(これらの2つのステップをすでに実行している場合は、直接ステップ3に進みます)

  3. すでにgraphvizとpydotplusがインストールされていると想定graphviz.pyして pydotplusインストールディレクトリでファイルを見つけます。私の場合は、次のパスにあります。C:\Users\Acevedo\Anaconda3\Lib\site-packages\pydotplus\graphviz.py

  4. graphviz.py606行目でこのブロックを開いて見つけます

    # Method 3 (Windows only)
    if os.sys.platform == 'win32':
    
        # Try and work out the equivalent of "C:\Program Files" on this
        # machine (might be on drive D:, or in a different language)
        if 'PROGRAMFILES' in os.environ:
            # Note, we could also use the win32api to get this
            # information, but win32api may not be installed.
            path = os.path.join(
                os.environ['PROGRAMFILES'], 'ATT', 'GraphViz', 'bin'
            )
        else:
            # Just in case, try the default...
            path = r"C:\Program Files\att\Graphviz\bin"
    
        progs = __find_executables(path)
  5. もし/他の部分をコメントしてのパスハードコーディングあなたの graphvizインストールディレクトリ、実行ファイル(あるべき内部をdot.execirco.exegvedit.exe、など)。新しいコードは次のようにする必要があります。

    # Method 3 (Windows only)
    if os.sys.platform == 'win32':
    
        # Try and work out the equivalent of "C:\Program Files" on this
        # machine (might be on drive D:, or in a different language)
        """if 'PROGRAMFILES' in os.environ:
            # Note, we could also use the win32api to get this
            # information, but win32api may not be installed.
            path = os.path.join(
                os.environ['PROGRAMFILES'], 'ATT', 'GraphViz', 'bin'
            )
        else:
            # Just in case, try the default...
            path = r"C:\Program Files\att\Graphviz\bin"
            """
        path = r"C:\Users\Acevedo\Anaconda3\Library\bin\graphviz"
    
        progs = __find_executables(path)
  6. graphviz.pyファイルを保存すると、すべてがうまくいくはずです:)


0

anacondaプロンプトでの実行による更新:

conda install python-graphviz

バージョン2.38(2019.10.16-0)までは私のためのトリックをしました。


0

anacondaディレクトリに移動

C:\ProgramData\Anaconda3\Library\bin

Graphvizが既にインストールされていることに気づきました。

Control Panel > System and Security > System > Advanced System Settings > Environment Variables > Path > Edit

と追加されました

"C:\ProgramData\Anaconda3\Library\bin\graphviz"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.