Help us understand the problem. What is going on with this article?

【python】TensorFlowで構築したモデルをexeで実行出来るようにする

More than 1 year has passed since last update.

pythonコードを単体で動くexeにしたいとき、pyinstallerが便利だったのでメモ。

やりたかったこと

TensorFlowで構築したモデルを、PCに詳しくない人にも使ってもらえるようにしたい。

TFモデル構築・保存
→hd5ファイルを呼び出して推論するpyファイルを作成
→そのpyファイルをexe化
→exeファイルをローカルに置くだけでwindows上で使えるように
というイメージ

環境

Windows 10 64bit
Anaconda (python 3.5)

インストール

pyinstallerはpyファイルをコマンド一発でexeファイルに変換してくれる便利なやつ

pip install pyinstaller

exeファイル作成コマンド

--onefileオプションを付けるとexe単体で実行出来るようになる

pyinsaller PATH/hogehoge.py --onefile

出てきたエラー

ライブラリが見つからないよエラー

conda環境で実行したファイルをexe化したためか、以下のようなエラーが出た。

OSError: Python library not found: libpython3.5m.so.1.0, libpython3.5mu.so.1.0, libpython3.5.so.1.0

その場合はconda環境のライブラリが置いてあるパスを共有ライブラリ検索パスに追加する。(私の場合は/home/USER_NAME/anaconda3/lib だった)

出来たファイルが実行出来ない?

いくつかの手順を踏んで無事ファイルが出来た...!と思いきや、何故かexeファイルが実行出来ない。
ここで初めて気付くが、コマンド実行していたのがlinuxだった。実はwindowsで使用するためのexeは、windowsOSでの作成が必須らしい。ということでwindowsPCに切り替えて実行。無事exeファイル化出来ました。

とにかくexeのファイルサイズが大きい

無事に出てきたexeファイルだったが、今度は「ファイルサイズ、大きくない...?」問題が出てきた。
ということで色々調べていると、同じことを考えている人がいた。先人の知恵ありがたい...

[Anaconda] Pyinstallerで生成される実行ファイルを数百MB -> 数十MBに削減する方法
(https://qiita.com/napinoco/items/068ce8ef6ef4309966b1)

しかし、結論、今回はファイルサイズをうまく小さくすることが出来なかった。というのも、今回はTFで比較的複雑な演算をしており、上記リンクにあるような解決策をそのまま応用することが厳しそうだったためである。これについては他にやり方がないか調査中。

pyファイルでのファイルの呼び出し方

exeファイルを配布することを考えると、絶対パスをベタ書きだとファイルの呼び出しエラーが出てしまう。今回はpyファイル内で自分のパスを取得して、そこを基点にファイルを呼び出す形式を取った。

Gri_Gra
若手技術者です。仕事では主にデータ解析とかやっています。趣味で作るものは仕事に関係あったりなかったり。pythonや機械学習まわりのことを備忘録的に書き留めてこうと思います。 記事に修正点/改善点等あればコメントください。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away