プログラムは学習済みモデルとサンプルエクセルファイルを読み込んで、
予測結果を新規エクセルファイルに書き出す(生成)という単純なものです。
jupyterでは正常稼働も新規エクセルファイル生成も確認しています。
# 保存したモデルをロードする import pickle filename = 'finalized_model_keras_1.sav' loaded_model = pickle.load(open(filename, 'rb')) import numpy as np import pandas as pd # 未知データの読み込み df1 = pd.read_excel('iris_data_3.xlsx',sheet_name='data2') x_test_keras_1 = np.array(df1) # 未知データをロードした学習済モデルで予測 y_test_keras_1 = loaded_model.predict(x_test_keras_1) print(x_test_keras_1,y_test_keras_1) import numpy as np import pandas as pd # 未知データの読み込み df1 = pd.read_excel('iris_data_3.xlsx',sheet_name='data2') x_test_keras_1 = np.array(df1) # 未知データをロードした学習済モデルで予測 y_test_keras_1 = loaded_model.predict(x_test_keras_1) # インデックス(0,1,2)に変換 y_test_keras_2 = np.argmax(y_test_keras_1, axis=1) print(x_test_keras_1,y_test_keras_2) # 元データに予測値の列を追加して保存(変数の場合) df = pd.DataFrame(x_test_keras_1) df['y_test_keras_2'] = y_test_keras_2 df.to_excel('iris_data_keras_1.xlsx', header=['a','b','c','d','e'], index=None)
これを、PyInstallerでexe化しました。
(pyファイルも、サンプルエクセルファイルも同じ階層フォルダに格納してexe化)
時間はかかりましたが、正常にフォルダができました。
そこで、distフォルダの中に生成されたexeファイルを起動すると、
一瞬、プロンプト画面が表示されて終了します。
エラーは発生していないようです。
しかし、目的とする、新規エクセルファイルがどこかに生成されていないか探しても
発見できませんでした。
何が原因なのか全く不明です。
どなたか、アドバイスをお願いできませんでしょうか?
以下、追記です。
以下のようにコマンドプロンプトから実行してみました。 (base) C:\python\test\dist\keras_1_exe_1>keras_1_exe_1.exe すると、以下のようなメッセージが出ました。 Traceback (most recent call last): File "keras_1_exe_1.py", line 10, in <module> FileNotFoundError: [Errno 2] No such file or directory: 'finalized_model_keras_1.sav' [14252] Failed to execute script keras_1_exe_1 savファイルは確かに存在しているのですが、なぜかNotfoundになっています。 ご指導頂ければ助かります。
importを文頭にまとめて実行した場合のエラーです。
(base) C:\python\test\dist\keras_1_exe_1>keras_1_exe_1.exe Traceback (most recent call last): File "keras_1_exe_1.py", line 8, in <module> File "c:\python\anaconda\pgm\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module exec(bytecode, module.__dict__) File "site-packages\numpy\__init__.py", line 150, in <module> File "c:\python\anaconda\pgm\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module exec(bytecode, module.__dict__) File "site-packages\numpy\random\__init__.py", line 180, in <module> File "mtrand.pyx", line 1, in init numpy.random.mtrand ModuleNotFoundError: No module named 'numpy.random.common' [11516] Failed to execute script keras_1_exe_1
エラーを追記しました。
(base) C:\python\test\dist\keras_1_exe_1>keras_1_exe_1.exe c:\python\anaconda\pgm\lib\site-packages\PyInstaller\loader\pyimod03_importers.py:627: MatplotlibDeprecationWarning: The MATPLOTLIBDATA environment variable was deprecated in Matplotlib 3.1 and will be removed in 3.3. exec(bytecode, module.__dict__) Traceback (most recent call last): File "keras_1_exe_1.py", line 19, in <module> ModuleNotFoundError: No module named 'keras' [4900] Failed to execute script keras_1_exe_1
解決しました!
お騒がせしました。
ありがとうございました。
あなたの回答
tips
プレビュー