8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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ファイル内で自分のパスを取得して、そこを基点にファイルを呼び出す形式を取った。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?