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选择题_二级python选择题题库
- pycharm导入Python_python简单项目
- 如何为pycharm配置Python解释器_pycharm选择python解释器
- pycharm打包python项目_Python怎么打包
- python中替换字符串中字符_Python replace()函数:替换字符串中的某个字符「建议收藏」
- python程序设计实践题EXP01-求圆面积、温度转换和绘制五角星
- python读取pkl_Python 读取文件
- Python库的开发和发布(一):快速入门
- Python 反转字符串_python输出字符串
- Python学生信息管理系统课程设计报告_python做的项目管理系统
- python django 数据库_Apache+Mysql+PHP/Python简单项目
- python deepcopy函数_Python deepcopy
- python如何生成随机数_Python生成50个随机数
- Python将数据写入txt文件_python将内容写入txt文件
- python将GUI项目打包成exe文件
- 软件测试|Python数据可视化神器——pyecharts教程(四)
- Python 自动化指南(繁琐工作自动化)第二版:十六、使用 CSV 文件和 JSON 数据
- python-异步IO编程-异步HTTP请求的实现
- python-数据库编程-如何在Python中连接到数据库
- python中%r和%s的区别详解编程语言
- Python在Linux系统中的应用(pythonlinux)
- Linux与Python:开拓者的新时代(linux和python)
- 使用python在校内发人人网状态(人人网看状态)
- 从零学Python之helloworld
- Python中的装饰器用法详解