概述
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:newprojectcrack_det_codeimg_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
最后
以上就是无辜心锁为你收集整理的pyqt5+tensorflow的程序打包过程的全部内容,希望文章能够帮你解决pyqt5+tensorflow的程序打包过程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复