janome を使った Python プログラムを pyinstaller で EXE 化するとき
Tkinter でも、見た目のよい GUI を作れる のあと、CustomTkinter を使って WordCloud を書き出すアプリを作ってみた。Janome ではじめるテキストマイニング など参考にした。出力結果Python をインストールしていない環境でも実行できるように、pyinstallerを使って EXE 化したのだが、"pyinstaller --onefile app.py" で EXE 化すると、実行時にエラーが出てしまう。FileNotFoundError: [Errno 2] No such file or directory:'C:\\Users\\kugutsu\\AppData\\Local\\Temp\\_MEI255482\\janome\\sysdic\\entries_compact0.py'いろいろ調べてみた結果、あれこれ考えるのは面倒なので、 --collect-all janome をつけて pyinstaller を実行してみたところ、エラーが出ずに実行できるようになった。ちなみに janome は、pure python の形態素解析器。MeCab だと、EXE化するときに組み込みが面倒なので、janome を使ってみた。よほど大きいファイルを扱うのでなければ、この用途では十分かなと。ちなみに、EXE化すると、対象ファイル選択するときに、initial_dir = os.path.abspath(os.path.dirname(__file__))のようなコードがあると、上記のエラーの中にある、Local\Temp\_MEI255482 のようなところから実際には開かれるのがちょっ面倒なところ。Python インタープリタから、.py ファイルを実行するのであれば、その .py ファイルがある場所がスタート地点となるのだが、EXE化するときには、明示的にどこかのフォルダーを指定してあげた方が使いやすいかな。ちなみに、対象のファイルは、word, excel, pdf, txt から読み込めるようにした。結構簡単にできるが、PDF ファイルの場合、単語の途中で切れてしまいがちだったりするので、そのあたり何とかしたいなとか思ったりする。