zoukankan      html  css  js  c++  java
  • Pyinstaller 入坑日记

    记录使用Pyinstaller打包mnist手写体数字识别的pyqt5 GUI界面的过程

    安装

    pip install pyinstaller -i https://pypi.douban.com/simple/
    

    但这种方式下可能会安装得不完整,导致打包出错

    解决方案
    原文链接:https://blog.csdn.net/Laxxs/article/details/104697262
    参照github大神提供的解决方案
    https://github.com/pyinstaller/pyinstaller/issues/2137

    1. (如果此前已经安装过)卸载从http://www.pyinstaller.org/下载的PyInstaller
      方法:pip uninstall pyinstaller
    2. 从GitHub开发人员存储库下载pyinstaller压缩包
      https://github.com/pyinstaller/pyinstaller/archive/develop.zip
    3. 我解压到路径E:jupyterworkplacevarietystorepyinstaller-develop下
    4. cd E:jupyterworkplacevarietystorepyinstaller-develop
    5. python setup.py install
    6. 要自动下载一些依赖库,得安装较长时间。download卡住,尝试科学上网等一等。此时还未安装完成,直接ctrl+c或暴力关掉的话会缺依赖库,终究还是得重来等他装完
      在这里插入图片描述

    打包文件过大问题

    1. 尽量使用from … import …的形式,不然会把整个库打包进来
    2. 直接在anaconda的tf13(我的环境名)下打包,会把很多无关的依赖库全打包进来,而且tf13下的tensorflow是GPU版,会将几百M的cuda文件也打包进来,打包个mnist手写体数字识别的pyqt5GUI界面,高达1.5G,我人都傻了,尝试创建新的conda环境,cpu版本且不含多余的库
    conda create -n purekeras pip python=3.6
    
    activate purekeas
    
    pip install pyqt5 tensorflow==1.13.1 keras pillow  -i https://pypi.douban.com/simple/
    (默认是安装cpu版)
    
    cd E:jupyterworkplacevarietystorepyinstaller-develop
    
    E:
    
    python setup.py install
    
    1. 打包得到:
      build文件夹:中间文件,可以删了
      dist文件夹:exe文件在这里,把这个文件夹发给好友,对方即可运行
      spec文件:环境文件,可以删了
      然后要把相关文件(mnist.npz,mnist_keras.h5)(源代码中通过文件路径“./mnist.npz”、“./mnist_keras.h5”使用到了这两个文件)移动到与exe文件同一路径下
      6.测试,可以成功运行(wrong信息是tensorflow与numpy版本对应问题,可以忽略,不影响)在这里插入图片描述
    2. 大小为380M,还是有点大,条件允许还是在虚拟机新建一个环境,不要在anaconda下打包比较好![在这里插入图片描述](https://img-blog.csdnimg.cn/20200710010705213.png

    更美观更高效地创建exe文件

    删掉冗余文件

    在前文件夹下的所有py文件都会被打包,所以训练模型时才会用到mnist_keras_train.py文件没必要打包

    • -w参数,不显示黑框框(debug过程最好不用这参数,等到debug结束exe文件可以正常运行了再使用)
    • -F参数,打包为一整个exe,而不是杂乱的文件夹
    • -i参数,为exe文件加上图标
    • 具体参数列表
    -F, –onefile产生一个文件用于部署 (参见XXXXX).
    -D, –onedir产生一个目录用于部署 (默认)
    -K, –tk在部署时包含 TCL/TK
    -a, –ascii不包含编码.在支持Unicode的python版本上默认包含所有的编码.
    -d, –debug产生debug版本的可执行文件
    -w,–windowed,–noconsole使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
    -c,–nowindowed,–console使用控制台子系统执行(默认)(只对Windows有效)
    -s,–strip可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用.
    -X, –upx如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)
    -o DIR, –out=DIR指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下.
    -p DIR, –path=DIR设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径
    –icon=<FILE.ICO>file.ico添加为可执行文件的资源(只对Windows系统有效)
    –icon=<FILE.EXE,N>file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)
    -v FILE, –version=FILEverfile作为可执行文件的版本资源(只对Windows系统有效)
    -n NAME, –name=NAME可选的项目(产生的spec)名字.如果省略,第一个脚本的主文件名将作为spec的名字
    • pyqt5内部图标
    from PySide2.QtGui import  QIcon
    app = QApplication([])
    app.setWindowIcon(QIcon('logo.png'))
    

    但把它打包到pyinstaller中又没有这么简单,参考连接:https://blog.csdn.net/CAIJINZHI/article/details/90768972
    所需code:

    <RCC>
    	<qresource prefix="/">
    		<file>CodeTH.png</file>
    	</qresource>
    </RCC>
    
    pyrcc5 -o resource.py resource.qrc
    # 更换图片,要重新生成resource.py
    
    import  resource
    
    

    icon资源

    马爸爸的矢量图库:https://www.iconfont.cn/
    png转ico:https://www.easyicon.net/covert/
    在这里插入图片描述

    打包代码

    pyinstaller --path E:jupyterworkplacepython_mini_projectHomework	est4.pyqt5_mnistqt -w  -F -i editor.ico  mnist_cnn_gui_main.py
    

    最后结果:
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Objective-C Loops
    HDU 4757 Tree(可持久化Trie+Tarjan离线LCA)
    Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset(可持久化Trie)
    HDU 5416 CRB and Tree(前缀思想+DFS)
    HDU 3695 Computer Virus on Planet Pandora(AC自动机模版题)
    HDU 2222 Keywords Search(AC自动机模版题)
    POJ 2697 A Board Game(Trie判重+BFS)
    HDU 4287 Intelligent IME(字典树数组版)
    HDU 1160 FatMouse's Speed(要记录路径的二维LIS)
    HDU 1565&1569 方格取数系列(状压DP或者最大流)
  • 原文地址:https://www.cnblogs.com/codeth/p/14082193.html
Copyright © 2011-2022 走看看