Python AI小项目打包通关:Pyinstaller和Wix都用上了
最近有个Python小项目要打个包,项目结构比较简单
- main.py(主文件),
- 以及model_050.hdf5 (在云端训练好的AI模型)
主函数里引用了一些包,如下

需要解决的问题:
- 将main.py和model_050.hdf5打包到一个exe文件中,这样模型不会容易被别人拷贝走
- 将这些依赖包cv2, PyQt5, tensorflow也全部打包进这个exe文件,这样脱离环境也能直接运行
Step1:
参考了文章:
这篇文章真是一盏明灯,没有走一步多余的弯路
文章中的这个要替换一下,文章是用的中文引号,通过不了。换成下面的就ok
datas=[('res','.')],
亲测可行:下面是我的项目结构

一通操作之后获得了main.exe

满怀欣喜的一运行,报错啦
ImportError: OpenCV loader: missing configuration file: [‘config.py‘].
也是正常,这么多年经验告诉我,一般都不可能一次性过的
Step2:
国外网站一通搜,没搞定啊,后来找到一个中国小哥的文章,搞定了
因为文章中有下面一句话,我知道了他已经踩过了同样的坑
查阅了往上的方法大部分都说升级 pyinstaller 和 opencv 就可以解决:
可是我的库都是最新版本的,根本没得升级。找了很久终于找到了一个成功的解决方法:
ImportError: OpenCV loader: missing configuration file: [‘config.py‘]. 报错解决
关键获取cv2的地址:

文件中建议用下面这条命令生成exe,
pyinstaller main.py -F --paths="D:\ProgramData\Anaconda3\lib\site-packages\cv2"
可是我之前用的方式是生成了main.spec配置文件的方式啊,上面的命令感觉不适合我
机智如我,那我到main.spec里看看呗

找到了pathex, 一看就是配置额外扫描地址的
果断把cv2的位置放了进去

pyinstaller main.spec重新生成exe。
嘿嘿~~ 工作了!

Step3:
打包成一个一键安装的程序,第一感觉就想到了Wix,然后找到了两篇文章
想着程序是用pyinstaller打包成exe的要么还是用第一篇文章中描述的方式先试试
稍微试了一下,后来发现文章中要下载Git,然后例子是打包的.py文件,和我生成的exe有点区别
果断放弃,有点费时。
那么开始使用第二种方式,因为刚好visual studio 2017本来我就有装
创建了一个setup project for wix v3

打开上面的Product.wxs 配置了安装目录,以及exe引用地址,还有需要的桌面快捷方式

build之后,生成了msi安装包和一个.cab文件

双击.cab文件之后发现,原来之前的exe藏在这里面了

双击msi一键安装之后,发现3件套全了,桌面快捷方式,程序位置,以及windows安装程序列表

Step4:
深吸一口气, 双击AIDetect快捷方式,在万籁俱静中等待程序运行,成功!!!

可谓是:踏破铁鞋无觅处 得来全不费功夫~~ (为什么会突然想到这句,奇怪了...... 好像和主题无关嘛)
Python AI小项目打包通关:Pyinstaller和Wix都用上了的更多相关文章
- 记一次python + selenium小项目出现的问题与解决办法
记一次python + selenium小项目出现的问题与解决办法 如何接入代理 def crawl_xdaili(self):#代理 可不用 需要时 解除注释 """ ...
- 学习笔记之Python人机交互小项目一:名字管理系统
2020是一个不平凡的一年,但即使挫折不断,我们每学期的课程实训也没有受到影响,仍旧如期实施.与往年不同的是,今年的实训老师是学校邀请的公司在职人员来给我们实训.今年实训的内容是Python语言,下面 ...
- 学习笔记之Python人机交互小项目二:名片管理系统
继上次利用列表相关知识做了简单的人机交互的小项目名字管理系统后,当学习到字典时,老师又让我们结合列表和字典的知识,结合一起做一个名片管理系统,这里分享给在学习Python的伙伴! 1.不使用函数 1 ...
- python flask 小项目
0 开始之前 网上看了很多教程,都不是很满意,因此自己写一个大型教程,从入门到做出一个比较完整的博客.此次教程不是直接把整个博客直接代码整理出来然后运行一遍就完事,我会从flask的各个模块讲起.所以 ...
- 找python爬虫小项目?github给你准备好了!
前言 即使我们都是程序员,但我们也并非都会修电脑,都会做酷炫的ppt,都会优化系统卡顿.其实程序员也是分行业.分专业的,就像医生也分内外科.呼吸科.神经科神的. 作为非专业的python选手,或者非专 ...
- python爬虫小项目实战
- Spring Boot:项目打包成war并发布到Tomcat上运行
一.修改pom文件 1. 因为SpringBoot中嵌入的有Tomcat,因此要移除嵌入式的Tomcat插件 <dependency> <groupId>org.springf ...
- vue+webpack项目打包后背景图片加载不出来问题解决
在做VUE +的WebPack脚手架项目打包完成后,在IIS服务器上运行发现项目中的背景图片加载不出来检查项目代码发现是因为CSS文件中,背景图片引用的路径问题;后来通过修改配置文件,问题终于解决了, ...
- 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片)
解决 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片) 1.当我们写了一个Python的项目时,特别是一个GUI项目,我们特备希望它能成为一个在Windows系统可执行的EXE文件 ...
- 把Python项目打包成exe文件
我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...
随机推荐
- 洛谷P2860 [USACO06JAN]Redundant Paths G (tarjan,边双缩点)
本题的大意就是加最少的边使得图成为边双. 多举例子,画图分析可得:最终答案就是叶子节点(度数为1的点)的个数加1在除以2. 那么我们的目的就转化为找叶子节点: 首先通过tarjan找到割边,再dfs将 ...
- 洛谷P2863 [USACO06JAN]The Cow Prom S (tarjan)
题目简述:一个有向图,求出这个图点数>1的强连通分量的个数. 那么就是tarjan求强联通分量的模板了. 记得要用一个数组标记节点是否在栈中. 1 #include<bits/stdc++ ...
- vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)
文章目录 1.看实现的效果 2.前端vue页面核心代码 2.1. 表格代码(表格样式可以去elementui组件库直接调用相应的) 2.2.分页组件代码 2.3 .script中的代码 3.后端核心代 ...
- 齐博X1到底是个什么鬼?
什么是齐博/齐博CMS之X1? 齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. ...
- .net core-利用PdfSharpCore和SkiaSharp.QrCode 添加PDF二维码页眉
前序 由于去年的一个项目需要在PDF 添加公司二维码 ,当时在网上找了很多操作PDF方案,第一种Aspose.PDF,很遗憾 Aspose.PDF 有添加版权的背景还是页脚我忘记了,不适合公司项目,最 ...
- Paxos分布式系统共识算法?我愿称其为点歌算法…
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. 分布式系统共识算法Paxos相信大家都不陌生,它被称为最难理解的算法不是没有道理的,首先,它的发表之路就充满了坎 ...
- 解决oracle18c没有hr用户
1.查找系统变量ORACLE_HOME的值 2.按照路径寻找sql文件 ORACLE_HOME变量值+demo\schema\human_resources 3.把hr_main.sql脚本文件放在此 ...
- python的一些运算符
# 1.算术运算符 print('1.算术运算符') # 1.1 + 求和 a = 10 b = 20 c = a + b print(c) print('a+b={}'.format(c)) pri ...
- Python基础部分:4、 python语法之注释
目录 一.python语法之注释 1.什么是注释 2.如何编写注释 二.PEP8规范 一.python语法之注释 1.什么是注释 注释用来向用户提示或解释某些代码的作用和功能,它可以出现在代码中的任何 ...
- 纯css爱心代码-最近超级火的打火机与公主裙中的爱心代码(简易版)
theme: cyanosis 最近打火机与公主裙中的爱心代码超级火,看着特别心动,让俺用css来写个简易版!!! 先看效果: 代码拆解: 主要是分为3大部分 分子颗粒 爱心 动画 代码实现: 分子颗 ...