繁体   English   中英

导入错误:无法导入名称“pywrap_tensorflow”

[英]ImportError: cannot import name 'pywrap_tensorflow'

我试图使用 pyinstaller 制作一个 .py 到 .exe 文件。 构建 exe 文件后,当我尝试通过 cmd 运行 .exe 文件时,它会显示以下错误。

D:\Ne folder\New folder\GuiExe>GuiExe.exe
Using TensorFlow backend.
Traceback (most recent call last):
  File "GuiExe.py", line 4, in <module>
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\keras\__init__.py", line 3, in <module>
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\keras\utils\__init__.py", line 6, in <module>
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\keras\utils\conv_utils.py", line 9, in <module>
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\keras\backend\__init__.py", line 1, in <module>
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\keras\backend\load_backend.py", line 90, in <module>
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\keras\backend\tensorflow_backend.py", line 5, in <module>
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\tensorflow\__init__.py", line 101, in <module>
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\tensorflow_core\__init__.py", line 40, in <module>
  File "lib\site-packages\tensorflow\__init__.py", line 50, in __getattr__
  File "lib\site-packages\tensorflow\__init__.py", line 44, in _load
  File "importlib\__init__.py", line 126, in import_module
  File "c:\users\manash\tesorflow\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\tensorflow_core\python\__init__.py", line 49, in <module>
ImportError: cannot import name 'pywrap_tensorflow'
[1764] Failed to execute script GuiExe

Ps 我还绑定了 --hidden-import pywrap_tensorflow 和 --paths pywrap_tensorflow.py 文件所在的位置。

我的 PY 到 EXE 命令是

pyinstaller --paths C:/Users/Manash/tesorflow/Lib/site-packages/tensorboard/compat/tensorflow_stub/pywrap_tensorflow.py --hidden-import pkg_resources.py2_warn --hidden-import pywrap_tensorflow --add-data "C:/Ne folder/train_with_vali_test_model_6_111(GLOVES)_soreo-ou_test.pckle";. GuiExe.py

我的 python 版本# 3.5.4 Tensorflow 版本# 2.1.0 keras 版本# 2.3.1

请帮助我,告诉我应该提供更多信息,或者我应该提供哪些信息。 为了得到解决方案。 提前致谢。

您可以尝试此处所述的解决方案。

根据讨论:

步骤1:创建这样的目录结构:

- main.py  # Your code goes here
- hooks
   - hook-tensorflow.py

第 2 步:将以下内容复制到 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)

第三步:编译时添加命令行选项--additional-hooks-dir=hooks

第 4 步:只需将完整的导入名称添加到包列表中。

main.py 文件包含以下from tensorflow import *代码from tensorflow import *

我通过更改 Python(3.7 到 3.5)、tensorflow(2 到 1.15)版本解决了这个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM