Python PyInstaller 4.0 打包 TensorFlow 2.0 项目不起作用 导入错误:无法导入名称'pywrap_tensorflow'



我正在尝试使用使用tensorflow的pyinstaller捆绑一个python应用程序。

我现在在虚拟环境中使用 Pyinstaller-4.0.dev0+2f4426f52、Tensorflow 2.0、Keras 2.3 和 Python 3.7.3。

我尝试了各种旧版本,但每个旧版本都有我无法解决的不同问题。我花了3天时间来尝试解决这个问题。

我正在运行的脚本的一个简化示例是:

from tensorflow import keras
model = keras.Sequential()

我使用以下命令运行pyinstaller:

pyinstaller --noconfirm --log-level=DEBUG ^
--onedir ^
--clean ^
--name MyModel ^
--hidden-import=tensorflow_core ^
--noupx ^
main.py

使用隐藏导入似乎是多余的,如输出所述:

调试:已找到隐藏的导入"tensorflow_core">

日志中没有生成错误或警告。

我已经查看了pyz-00.pyz文件,可以确认TensorFlow模块包含在文件中。我确认存档包含:

'tensorflow_core.python': (1, 9871434, 2355(,

但是,当我尝试运行exe时,出现以下错误:

文件"站点包\tensorflow_core\python_init_.py",第 49 行,位于 导入错误: 无法从中导入名称"pywrap_tensorflow" 'tensorflow_core.python' (\dist\MyModel\tensorflow_core\python_init_.pyc(

pyinstaller似乎无法处理tensorflow,我想知道是否有任何有经验的人可能知道如何为它编写钩子或知道其他解决方法?

您可以尝试更改从中调用此程序的目录吗?有时,当当前目录有一个带有init 的 tensorflow子目录时,会出现这样的错误.py Python 更喜欢任何其他安装。您还可以参考以下链接了解更多故障排除步骤:

Tensorflow-gpu with pyinstaller

转到此路径/usr/local/lib/python3.7/dist-packages
复制tensorflow_core文件夹,将其粘贴到项目目录中并将其重命名为:

tensorflow from tensorflow import keras

import tensorflow as tf后,它对我有用。请检查。

最新更新