tensorflowを利用したプログラムをexeファイル化したいと考えております。
そこでpyinstallerでexeを作成してみました。
exeファイル自体はエラー無く作成はできたのですが、exeファイルを実行するとエラーが出てしまい動作が停止してしまいました。
このエラーの解決方法がわからず質問させていただきました。
【環境】
centos7 Python 3.6.9 or Python 3.7.0(3.7環境でも試した) tensorflow 1.15.0 PyInstaller 3.6
【プログラム】
python
1import tensorflow as tf 2 3print("@@@@@@")
単にtensorflowを読み込んで文字列をprintするだけの単純なプログラムです。
ターミナル上から上記プログラムを実行(python test.py)するときちんと「@@@@@@」が表示されます。(実際には学習済みデータを再読み込みさせて評価を行いたいと考えています)
【プログラムをexe化】
コマンドライン上から下記コマンドを実行
$ pyinstaller test.py --onefile
ログが多数出力されますが最終行に
169014 INFO: Building EXE from EXE-00.toc completed successfully.
が表示され、実行ディレクトリから見てdist/testなる実行ファイルが作成されます。
【実行ファイルを起動】
作成された実行ファイルを起動すると
Traceback (most recent call last): File "test.py", line 1, in <module> import tensorflow as tf File "/home/-------/anaconda3/envs/test_kankyo/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module exec(bytecode, module.__dict__) File "site-packages/tensorflow/__init__.py", line 99, in <module> File "/home/-------/anaconda3/envs/test_kankyo/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module exec(bytecode, module.__dict__) File "site-packages/tensorflow_core/__init__.py", line 28, in <module> File "site-packages/tensorflow/__init__.py", line 50, in __getattr__ File "site-packages/tensorflow/__init__.py", line 44, in _load File "importlib/__init__.py", line 126, in import_module ModuleNotFoundError: No module named 'tensorflow_core.python' [17676] Failed to execute script test
というエラーが出力されてしまいどうにもならない状況になっております。
色々とサイトを巡って解決の調査をおこなってはみたのですが上手くいかない状況です
もし、この環境でtensorflow1.15を利用したpythonのexeファイル化のやり方がお分かりになる方がいらっしゃいましたらご教授の程よろしくお願いいたします
【試行錯誤内容】
調査と試した内容としては
- PyInstallerはtensorflow=1.14にしか対応していない(stackflow内の回答で発見)
→ tensorflow1.15の環境でしかできない制約のため1.14に戻すのは断念
→ 公式な情報としてはtensorflow1.14しか対応していないとうい情報は見つけられなかった
- 「from PyInstaller.utils.hooks import collect_submodules, collect_data_files
hiddenimports = collect_submodules('tensorflow_core')」
をtest.specファイルに入れてからの実行
→ 試してはみたがエラーは変わらず表示
という内容を行ってみました。
あなたの回答
tips
プレビュー