pyqt5+tensorflow的程序打包过程

1、采用pyinstaller进行打包,在窗口pip install pyinstaller,在这里提供镜像安装速度很快,比较常用的国内镜像包括:

(1)阿里云 http://mirrors.aliyun.com/pypi/simple/
(2)豆瓣http://pypi.douban.com/simple/
(3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
(5)华中科技大学http://pypi.hustunique.com/
相关镜像知识
在这里插入图片描述查看是否安装成功,在窗口中输入 pip list,可以查看安装版本。
在这里插入图片描述

2、开始打包生成xxx.spec文件
执行代码pyi-makespec -w xxx.py
在这里插入图片描述注意,G:\newproject\crack_det_code\img_dec3是我打包文件所在的位置,要将窗口转到自己要打包的文件路径下。
生成的no_gps.spec文件可以用pycharm打开,或者用Sublime Text 3、笔记本等打开如下:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['no_gps.py'],
             pathex=['G:\\newproject\\crack_det_code\\img_dec3'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='no_gps',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               upx_exclude=[],
               name='no_gps')

我们在进行打包单独的py文件时,不需要对这个文件进行修改,如果你有背景,需要在datas=[],里面添加图像的绝对路径文件夹若在打包文件的同路径下可这样添加:datas=[('xxx.jpg','.')],添加其他文件夹datas=[('G:\\newproject\\crack_det_code\\img_dec3\\img','img')]
注意可以添加多个文件,要以元组的形式进行添加如上所示。
3、生成exe程序

pyinstaller no_gps.spec在这里插入图片描述
生成两个文件如下:
在这里插入图片描述
这两个文件里都存在生成的程序,我们直接再dist文件中找到生成的程序,在窗口下进行运行
在这里插入图片描述当程序不能运行时,在窗口运行会报错问题出在哪里。下面是我打开时的程序。
在这里插入图片描述4、关于嵌入卷积神经网络模型的打包问题,我开始采用的本版tensorflow1.14.0,keras2.3.0当我打包时提示no found name tensorflow,但是我安装了tensorflow,我猜测是版本过高问题,于是安装了tensorflow1.10.0版本,kersa2.2.0,(tensorflow与keras版本对应参考:https://www.cnblogs.com/carle-09/p/11661261.html,python对应版本不准确。)由于版本问题,我训练的模型无法继续使用,我重新训练的新的卷积模型,打包成功,注意调用模型,需要将模型文件写入到xxx.spec文件中datas里面如下:

a = Analysis(['no_gps.py'],
             pathex=['G:\\newproject\\crack_det_code\\img_dec3'],
             binaries=[],
             datas=[('G:\\newproject\\crack_det_code\\img_dec3\\checkpoint','checkpoint')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

在之前我还遇到一个坑,我打包多个py文件的程序,每个文件都写了程序运行代码:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainApp = MainClass()
    MainWindow = QMainWindow()
    MainApp.show()
    sys.exit(app.exec_())

打包程序不能运行,也无保存,我猜测可能和上面的代码有关,我删除其他py文件的执行代码,只保留主程序的代码,就成功运行了。
在这里插入图片描述
5、多py文件打包,需要将相关的py文件添加到xxx.spec,以元组的形式添加到Analysis(['no_gps.py'],中,下面是我另一个程序的.spec文件修改的地方


```python
a = Analysis(['main_action.py',
                'data_analyse_new.py',
                'new_file.py',
                'no_gps_new1.py',
                'function_runvar.py'],
             pathex=['G:\\newproject\\crack_det_code\\img_dec3'],
             binaries=[],
             datas=[('G:\\newproject\\crack_det_code\\img_dec3\\checkpoint','checkpoint'),('6.jpg','.'),('14.jpg','.')],
             hiddenimports=[],
             hookspath=['pandas','pandas._libs','pandas._libs.tslibs.np_datetime','pandas._libs.tslibs.timedeltas',
             'pandas._libs.tslibs.nattype', 'pandas._libs.skiplist','scipy._lib','scipy._lib.messagestream'],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

修改后在执行pyinstaller xxx.spec,就可以生成程序。
参考:
修改程序图标点击
生成不带后台的程序
将xxx.spec文件中的console=True改为console=False后台消失

exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='main_action',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )

参考https://blog.csdn.net/chenzhanhai/article/details/85334919

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值