Estou tentando fazer esses pacotes funcionarem há algum tempo, mas sem sucesso. Basicamente, o erro é:
GraphViz's Executables not found
EDIT : eu não tinha postado um terminal log
com o erro originalmente. Estou usando Ubuntu
agora para não conseguir reproduzir exatamente o mesmo erro que cometi no passado (um ano atrás, tão distante no passado ...). No entanto, estou enfrentando um erro semelhante - se não o mesmo - na minha configuração atual; mesmo enquanto estiver usando um ambiente virtual com pipenv
. O erro parece vir de linhas que foram descritas na resposta de @ 张 乾元 :
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
Eu tentei instalar GraphViz
via 2 maneiras diferentes: via pip install graphviz
e através do .msi
pacote (e também tentei instalar pydot
, pydotplus
e graphviz
em muitas ordens diferentes).
O código que estou tentando executar é simplesmente um dot-to-png
conversor para o conjunto de dados Iris .
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())
Dentro Jupyter Notebooks
e fora Atom
, o sistema parece estar procurando por GraphViz
dentro pydotplus
, como aponta ~\Anaconda3\lib\site-packages\pydotplus\graphviz.py
. Não deveria ser o contrário?
Por fim, quero apenas salientar que já tentei adicionar GraphViz
o caminho do sistema ao PATH
uso C:\Users\Philippe\Anaconda3\Library\bin\graphviz
.
pipenv
,virtualenv
ouDocker Containers
, embora eu ainda não o tenha verificado adequadamente.Respostas:
Veja: Os executáveis do Graphviz não são encontrados (Python 3.4) e o pacote graphviz não adiciona o executável ao PATH nas janelas # 1666 e Problema com o graphviz # 1357 - é um problema recorrente (para esse programa) com as configurações da variável de ambiente PATH. A instalação de versões específicas ou em uma ordem específica ou a adição manual de um PATH corrigem o problema.
É melhor que o Package defina o PATH corretamente e o remova quando você desinstala o Pacote (para não ter um PATH longo demais - o que geralmente não acontece). A configuração manual evita quebras futuras e o force a funcionar, mas você precisará remover manualmente o texto extra se desinstalar o Pacote.
Aqui está o conselho desses três links:
pip install graphviz
conda install graphviz
ou
Você precisa correr
conda install python-graphviz
ao invés de
pip install graphviz
para obter essas ligações, que também funcionam com o pacote Graphviz da conda.
ou
Faça o download e instale o graphviz-2.38.msi (use a versão mais recente) em https://graphviz.gitlab.io/_pages/Download/Download_windows.html
Defina a variável do caminho
(a) Painel de Controle> Sistema e Segurança> Sistema> Configurações Avançadas do Sistema> Variáveis de Ambiente> Caminho> Editar
(b) adicione 'C: \ Arquivos de Programas (x86) \ Graphviz2.38 \ bin'
fonte
No meu caso, consigo encontrar
graphviz
executáveis manualmenteanaconda3\Library\bin\graphviz
, mas ainda assim recebo oGraphViz's Executables not found
erro.Tentei, sem sucesso, a sugestão de zhangqianyuan, bem como ordens específicas de instalação e uso de módulos
python-graphviz
(solução oficial, amplamente discutida aqui ). A única coisa que não tentei foi adulterar minhaPATH
variável em todo o sistema.Um método que funcionou para mim foi inserir essas linhas no meu código (antes das funções relacionadas ao graphviz):
Este é um pequeno truque sujo, mas existem algumas vantagens:
PATH
as alterações estão em vigor localmente e até oos
módulo ser recarregadoPATH
sistemaEstou usando Python 3.7, Windows 10, Anaconda. O Graphviz foi instalado usando
conda install python-graphviz
, mas não acredito que exista diferença neste casofonte
Se você possui o Anaconda, pode usar o gerenciador do Conda.
Digite
Conda
no Painel Iniciar e tente instalar via Conda.Por exemplo:
fonte
O que funcionou no meu caso de uso : Gerando diagramas de modelo no
Django
. Mas também pode ser estendido para gerar diagramas para outras aplicações.Eu instalei o
GraphViz
para visualizar o gráfico do.dot
arquivo. Pode ser instalado a partir de graphviz.org .Crie um arquivo de ponto associado ao projeto:
Ou você pode criar os
.dot
arquivos para vários aplicativos. Referência: Usando django-extensions para visualizar o diagrama do banco de dados no aplicativo django , por Thomas .Agora você só precisa ver
dotfile.dot
. Então, onde devo ver isso como uma imagem?gvedit.exe
(não sei no que está o arquivo correspondenteLinux
) no caminho não solicitado do aplicativo.C:\Program Files (x86)\Graphviz2.38\bin\gvedit.exe
.Agora execute
gvedit.exe
e abra o.dot
arquivo criado até agora.fonte
Encontrar:
C:\Users\zhangqianyuan\AppData\Local\Programs\Python\Python36\Lib\site-packages\pydotplus
Aberto
graphviz.py
Encontre a linha 1925 - linha 1972, encontre a função:
Na função encontre:
Entre os dois blocos, adicione este (caminho executável do seu Graphviz):
Depois de adicionar o resultado é:
salve o arquivo alterado e poderá executá-lo com sucesso.
é melhor salvá-lo como arquivo bmp porque o arquivo png não funcionará. a foto está aqui
fonte
Eu tive o mesmo problema, de modo que acabei de instalar o pydotplus de forma independente (pip3 install pydotplus) e importar o pydotplus, tudo funciona bem.
fonte
Eu tive o mesmo problema e fiz tudo o que foi sugerido neste e em outros fóruns e nada deu certo. As instruções a seguir resolverão 100% esse problema se você estiver usando o Windows e o Python 3:
Instale
pydotplus
via conda:conda install pydotplus
Instale de forma
graphviz
independenteconda install python-graphviz
(se você já executou essas duas etapas, vá direto para a etapa 3)Supondo que você já tem graphviz e pydotplus instalado, encontrar o
graphviz.py
arquivo no seupydotplus
diretório de instalação, no meu caso, foi no seguinte caminho:C:\Users\Acevedo\Anaconda3\Lib\site-packages\pydotplus\graphviz.py
Abra
graphviz.py
e encontre este bloco na linha 606Comentar o if / else parte e codificar o caminho do seu
graphviz
diretório de instalação, dentro do qual devem ser os executáveis (dot.exe
,circo.exe
,gvedit.exe
, etc.). O novo código deve ficar assim:Salve o
graphviz.py
arquivo e tudo deve funcionar muito bem :)fonte
Atualizando através da execução no prompt do anaconda:
até a versão 2.38 (16/10/2019) fez o truque para mim.
fonte
Navegado para o diretório anaconda
C:\ProgramData\Anaconda3\Library\bin
Percebi que o Graphviz já estava instalado, tudo o que fiz foi ir ao
Control Panel > System and Security > System > Advanced System Settings > Environment Variables > Path > Edit
e acrescentou
"C:\ProgramData\Anaconda3\Library\bin\graphviz"
fonte