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

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