該類型錯誤還有ImportError: cannot import name 'pywrap_tensorflow' 等。運行報錯是pyinstaller無法導入tensorflow_core。問題解決方式爲:在所運行的python文件(mypython.py中使用from tensorflow import *)路徑下創建一個名爲hooks的文件夾,文件夾沒創建python程序文件hook-tensorflow.py。
--mypython.py
--hooks
--hook-tensorflow.py
hook-tensorflow.py中的內容如下:
from PyInstaller.utils.hooks import collect_all
def hook(hook_api):
packages = [
'tensorflow',
'tensorflow_core',
'astor'
]
for package in packages:
datas, binaries, hiddenimports = collect_all(package)
hook_api.add_datas(datas)
hook_api.add_binaries(binaries)
hook_api.add_imports(*hiddenimports)
運行pyinstaller時添加參數--additional-hooks-dir=hooks。最終運行的命令爲
pyinstaller.exe -F --additional-hooks-dir=hooks mypython.py
參考:
https://stackoverflow.com/questions/60384288/pyinstaller-modulenotfounderror
https://github.com/pyinstaller/pyinstaller/issues/4400#issuecomment-550905592