zoukankan      html  css  js  c++  java
  • 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-packagesPyInstallerloader thookspyi_rth_pkgres.py", line 13, in
    <module>
    File "c:program filespython37libsite-packagesPyInstallerloaderpyimod03_
    importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
    File "site-packagespkg_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环境对应的目录如: envshayLibsite-packagespkg_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

  • 相关阅读:
    什么是内存(一):存储器层次结构
    关于跨平台的一些认识
    适合小白/外行的git与github最基础最浅显教程
    Android动画(二)-属性动画
    Android动画(一)-视图动画与帧动画
    View学习(四)-View的绘制(draw)过程
    View学习(三)- View的布局(layout)过程
    View学习(二)-View的测量(measure)过程
    View学习(一)-DecorView,measureSpec与LayoutParams
    wcf的诡异问题
  • 原文地址:https://www.cnblogs.com/carl2380/p/15328095.html
Copyright © 2011-2022 走看看