关于利用Pyinstaller将含有tensorflow的.py文件转化为.exe程序后执行时出现的问题

问题1:ImportError: No module named ‘_pywrap_tensorflow_internal’

   File "site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
   File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
   File "site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
   File "site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 20, in swig_import_helper
   File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
 ImportError: DLL load failed: 找不到指定的模块。
Traceback (most recent call last):
  File "main.py", line 17, in <module>
  File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
  File "site-packages\keras\__init__.py", line 3, in <module>
  File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
  File "site-packages\keras\utils\__init__.py", line 6, in <module>
  File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
  File "site-packages\keras\utils\conv_utils.py", line 9, in <module>
  File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
  File "site-packages\keras\backend\__init__.py", line 87, in <module>
  File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
  File "site-packages\keras\backend\tensorflow_backend.py", line 5, in <module>
  File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
  File "site-packages\tensorflow\__init__.py", line 22, in <module>
  File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
  File "site-packages\tensorflow\python\__init__.py", line 49, in <module>
  File "d:\programfiles\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
  File "site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in <module>
ImportError: Traceback (most recent call last):
  File "site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 18, in swig_import_helper
  File "imp.py", line 296, in find_module
ImportError: No module named '_pywrap_tensorflow_internal'

解决方案:在网上查找的方法主要是将tensorflow-gpu版本降级,本人在对tensorflow-gpu的1.8版本卸载降级到1.6版本后,再次打包.py文件生成.exe程序,执行后未报上面的错误,但是又出现了新的问题,如下:

问题二:ModuleNotFoundError: No module named ‘pywt._extensions._cwt’

 Traceback (most recent call last):
  File "data_processing_gui.py", line 12, in <module>
  File "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\radiomics\__init__.py", line 15, in <module>
  File "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\radiomics\imageoperations.py", line 6, in <module>
  File "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\pywt\__init__.py", line 17, in <module>
  File "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\pywt\_functions.py", line 17, in <module>
  File "c:\users\fanyu\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
    module = loader.load_module(fullname)
  File "pywt/_extensions/_pywt.pyx", line 1, in init pywt._extensions._pywt (pywt\_extensions\_pywt.c:31281)
ModuleNotFoundError: No module named 'pywt._extensions._cwt'

解决方案:在上面打包生成.exe程序的同时还会生成一个.spec的文件,用任意一个编辑器打开,将其中的hiddenimports=[ ] 改成:

hiddenimports=["pywt","pywt._extensions._cwt"],

同时我还将其中的console=True改成了 console=False,改这个的目的是为了打开.exe程序,不让其生成后台的字符界面。到这里重点来了!!!
再次打开.exe程序能正常打开,但是点击那些需要调用tensorflow的按钮时,程序直接崩溃。纠其原因如下:在对tensorflow-gpu的版本进行降级之后,需要安装与其版本对应的CUDNN+CUDA,由于安装这两个比较麻烦,所以我找到了最终的解决方案
   tensorflow-gpu卸载掉,安装tensorflow的CPU版,重新打包 .py文件,在打包完成后,执行.exe程序也未出现问题一,但出现了问题二,利用上面的解决方案解决掉问题二后,完美的运行了我的第一个.exe程序了。

参考链接:
https://blog.csdn.net/qq_33485434/article/details/80621282
https://blog.csdn.net/wubingwei12/article/details/85061752

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值