https://blog.csdn.net/weixin_40423303/article/details/105923267

 

pyinstaller 打包 keras tensorflow pyqt 的 打包步骤(踩坑日记 )

“神”地摊小哥 2020-05-04 21:40:49 838 收藏 14
文章标签: pyqt tensorflow window 封装
版权
打包过程:

1. 确认自己的库环境

本文主要为:

PyQt5 5.13.0
PyQt5-sip 12.7.2
opencv-python 4.2.0.34
pyqt5-tools 5.13.0.1.5
tensorflow 2.1.0
Keras 2.3.1
其中值得注意的是,keras和tensorflow 使用Conda安装 且安装CPU版本 ,因为要考虑到并不是每台机子都安装了GPU环境,且GPU封装后 体积极大

#必须按照这个顺序去装
conda install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple/
conda install keras -i https://pypi.tuna.tsinghua.edu.cn/simple/
#当使用conda安装keras失败时,使用pip安装keras也可,但必须确保安装了以上的tensorflow
pip install keras -i https://pypi.tuna.tsinghua.edu.cn/simple/
pyqt安装请参考本博主的另一篇文章 :https://blog.csdn.net/weixin_40423303/article/details/105906174

2.安装pyinstaller

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
3.进行封装

首先在终端中激活conda的环境(安装上面库的环境),并cd进入要封装的文件所在的路径,如图

 

接着 输入

pyinstaller -F -w main.py
#此指令为一般性封装,-F代表所有库和文件都封装在一个.exe文件中,-w代表运行封装后的软件时不在弹出终端
#main.py是你要封装的程序的主程序,其他代码文件pyinstaller会自动关联
#注意:此指令用于不包含tensorflow和keras时使用

#注意:用于封装tensorflow和keras时运行以上指令报错,一般为我错误解决方案中的这三个错误,这三个错误必须解决不然无法封装。

 

 

下一步将跳转至解决错误:

 

报错及解决方案
但因为博主封装需要包含tensorflow和keras,这时开始报各样的错,可以根据报错在我下面找到解决方案,如下:

 

1.打包和运行打包后的软件报错,如:

Traceback (most recent call last):
File "site-packages\PyInstaller\loader\rthooks\pyi_rth_pkgres.py", line 13, in
<module>
File "c:\program files\python37\lib\site-packages\PyInstaller\loader\pyimod03_
importers.py", line 623, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\pkg_resources\__init__.py", line 86, in <module>
ModuleNotFoundError: No module named 'pkg_resources.py2_warn'
[3844] Failed to execute script pyi_rth_pkgres
(转载原文:https://msd.misuland.com/pd/3691885202524606362?page=1)

解决方法是:找到python环境对应的目录如: envs\hay\Lib\site-packages\pkg_resources\__init__.py,把86行注释掉。重新打包即可,对应内容如下:

__import__('pkg_resources.extern.packaging.version')
__import__('pkg_resources.extern.packaging.specifiers')
__import__('pkg_resources.extern.packaging.requirements')
__import__('pkg_resources.extern.packaging.markers')
#__import__('pkg_resources.py2_warn') #就是这一行注释掉

__metaclass__ = type
2.打包和运行打包后的软件报错,如: 中 Importerror no module named win32com.client 错误解决

转载:https://blog.csdn.net/poppyque/article/details/85252963

通过安装win32com解决问题 ,再次封装就好

pip install pypiwin32 -i https://pypi.tuna.tsinghua.edu.cn/simple/

3.打包和运行打包后的软件报错,如:ModuleNotFoundError: No module named 'tensorflow_core.python和cannot import name 'pywrap_tensorflow'

(转载原文:https://blog.csdn.net/TaChean/article/details/104664435/)

解决方法:

第一步在所运行的python文件(本文是main.py)添加

from tensorflow import *

第二步:路径下创建一个名为hooks的文件夹,并在hooks文件夹中创建python程序文件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)
如下

--main.py

--hooks

--hook-tensorflow.py

 

第三步:运行封装指令

pyinstaller -F -w --additional-hooks-dir=hooks main.py

 

 

至此 所有坑和问题都解决了 ,且软件顺利在无任何库的其他windows设备上正常运行!!!!
————————————————
版权声明:本文为CSDN博主「“神”地摊小哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40423303/article/details/105923267