quarta-feira, 28 de janeiro de 2015

Instalando PyGraphviz no Windows

Olá pessoal, nesse post nós iremos instalar PyGraphviz que é uma interface em Python para a GraphViz que é um pacote que serve para criar, editar, ler, escrever grafos.

Site oficial da PyGraphViz: http://pygraphviz.github.io/

Se você for tentar instalar pelo pip "pip install pygraphviz" no Windows vai dar um erro pois possui a dependência da GraphViz.

O erro é o seguinte: "Error locating graphviz". Caso você tente dar um "pip install graphviz", obterá mais um erro, pois não é possível achar a graphviz.

Primeiramente faça o download do instalador da Graphviz:

http://www.graphviz.org/pub/graphviz/stable/windows/

A versão que baixei foi a 2.28.0. Eu especifiquei a versão porque tentei com a 2.38, mas obtive uma crash numa DLL, ou seja, comigo não funcionou com a 2.38.

Após baixar e instalar a Graphviz, faça o download da pygraphviz 1.1:

http://networkx.lanl.gov/download/pygraphviz/

Extraia, abra o "setup.py" e procure por "include_path" e "library_path". O meu ficou:

library_path='C:\Program Files (x86)\Graphviz 2.28\lib\debug\lib'
include_path='C:\Program Files (x86)\Graphviz 2.28\include\graphviz'

Se você der um "python setup.py install" obterá o erro "Unable to find vcvarsall.bat".

A pygraphviz precisa ser compilada, irei compilar com o mingw32. Segue o link para baixar o MinGW:


O MinGW precisa está no path do sistema (para saber se está basta abrir o cmd e digitar gcc, se aparecer algo como "gcc: no input files", então é porque está no path).

Abra o arquivo "unixccompiler.py", ele está no seguinte diretório (a minha versão do python é 2.7): C:\Python27\Lib\distutils

Procure pela variável "compiler", no meu arquivo ele estava na linha 227, ela está assim no meu:

compiler = os.path.basename(sysconfig.get_config_var("CC"))

Comente a linha acima e coloque abaixo: compiler = 'gcc'

Para instalar a pygraphviz, abra o cmd, navegue até a pasta do "setup.py" dela e faça:

python setup.py build -c mingw32

Foi gerada uma pasta chamada "build" no diretório que você executou o comando.

Dentro de "build" tem uma subpasta chamada "lib.win32-2.7" que por sua vez contém uma pasta chamada "pygraphviz". Copie ela para C:\Python27\Lib\site-packages (esse é meu diretório, pode ser diferente do seu diretório dependendo da sua versão do Python).

Lembra da variável "compiler" que comentamos? Descomente a linha que havia sido comentada e apague a linha do "compiler = 'gcc'".

Abra o arquivo "agraph.py", o meu está em: C:\Python27\Lib\site-packages\pygraphviz

Na linha 1248 tem "runprog=self._get_prog(prog)", modifique para:

runprog=r'"%s"'%self._get_prog(prog)


Sim, você acabou de corrigir um bug! Cuidado com a indentação!

Veja se está tudo ok abrindo o cmd e tentando importar a pygraphviz:


Ah, mas você quer testar algum código né? Aí vai um:


Ao executar, será criado dois arquivos: "simple.dot" e "simple.png". Veja só o arquivo "simple.png" que é criado:


As vezes o Windows não é muito gentil com nós programadores, mas espero que o tutorial ajude, eu tive problemas, por isso resolvi montar o tutorial para ajudar outras pessoas. Quaisquer dúvidas deixem nos comentários, até a próxima!


Nenhum comentário: