2017-08-23 151 views
1

我的Python紙條包括:Pyinstaller創建EXE文件無法加載keras神經網絡模型

from keras.models import model_from_json 
model = model_from_json(open("test.json").read()) 
model.load_weights("test.h5") 
model.compile(loss="mean_squared_error", optimizer = "adam") 

然後,我創建使用pyinstaller從上述腳本一個exe文件。該exe文件無法加載保存的模型。任何想法,將不勝感激。

+0

錯誤消息將有助於診斷問題。你是以單文件模式還是單目錄模式創建exe文件? 'test.h5'放置在可執行文件附近嗎? – 9dogs

+0

最初我使用這個: pyinstaller -w myscript.py 它們在目錄中創建exe和依賴庫。 和錯誤: ModuleNotFoundError:無模塊名爲 'h5py.defs' ModuleNotFoundError:無模塊名爲 'h5py.utils' 我已經導入h5py: 進口h5py 我用這個命令來解決該錯誤: pyinstaller -w --hidden-import = h5py.defs --hidden-import = h5py.utils myscript.py 我得到這個錯誤: ModuleNotFoundError:沒有名爲'h5py.h5ac'的模塊 – andre

+0

我的建議太長了 - 感動它來回答。對不起,如果它不會幫助。 – 9dogs

回答

0

如果您收到有關h5py子模塊的錯誤,請嘗試使用collect_submodules function將它們全部添加到hidden_imports

您可能已經注意到由pyinstaller生成的名爲myscript.spec的文件。在這個文件裏面是一個關於如何構建腳本的指令(它也只是一個Python代碼!)。

所以嘗試編輯這個myscript.spec這樣的:

from PyInstaller.utils.hooks import collect_submodules 

hidden_imports = collect_submodules('h5py') 

a = Analysis(['myscript.py'], 
     binaries=None, 
     datas=[], 
     hiddenimports=hidden_imports, 
     hookspath=[], 
     runtime_hooks=[], 
     excludes=[], 
     win_no_prefer_redirects=False, 
     win_private_assemblies=False, 
     cipher=None) 

# ... rest of a file untouched 

然後運行pyinstaller針對文件:pyinstaller myscript.spec

0

這解決了錯誤:

pyinstaller -w --hidden進口= h5py.defs --hidden進口= h5py.utils --hidden進口= h5py.h5ac --hidden進口= h5py ._proxy myscript.py