読者です 読者をやめる 読者になる 読者になる

pydot3を使おうとしたらコケた

www.cl.ecei.tohoku.ac.jpをやっていてpydotを使う必要があったのでインストールしたけどうまく動いてくれなかった.いじってたら動作するようになったのでそれのメモ
他の環境ではどうなるかわかりません

Pythonのバージョン

Python 3.4.1 :: Anaconda 2.1.0 (x86_64)

インストール(python3系ではpydot3らしい)

pip install pydot3

サンプルソース

import pydot

edges=[('root', '日本語'), ('root', 'Latin'), ('root' , 'English'), ('Latin', 'English')]
g = pydot.graph_from_edges(edges)
g.write_jpeg('graph_from_edges_dot.jpg', prog='dot') 

まず最初に出るエラーはこれ

AttributeError: 'module' object has no attribute 'graph_from_edges'

import pydot# import pydot.pydot as pydotに書き換えるとこのエラーは消える

次に出るエラーはこれ

Couldn't import dot_parser, loading of dot files will not be possible.

site-packages/pydot/pydot.pyの32行目のException の中身をprintしてみるとcannot import name 'pydot'らしい
site-packages/pydot/dot_parser.pyfrom . import pydotimport pydotに書き換えるとこのエラーは消える

これでもまだ動作しなくてcannot import name 'Upcase'と言われる
Resolved #1 by jthomas8 · Pull Request #2 · log0/pydot3 · GitHub を参考にUpcaseupcaseTokensに書き換える

これで動作するようになる
site-packages/pydot/dot_parser.pyの方は from . import dot_parserのままでエラー吐かないのよくわからない
あとこのエラーの原因はpydot3の__init__.pyに何も書かれていないからだと思うけど,pythonのmoduleについて詳しくないから落ち着いたら勉強してそっち方向での解決策を探したい