python opencv pyinstaller踩坑日记

Posted 带酒书生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python opencv pyinstaller踩坑日记相关的知识,希望对你有一定的参考价值。

前两天在B站看到一个基于opencv实时更换人像背景的视频,想到了腾讯会议里面的虚拟背景,想着蛮有意思的,试试看,正好之前搭的有python的环境装的有pycharm,就跟着敲了一遍。

代码也不多,搞好后直接跑了一下,效果感觉没视频中的好,本来想着打包成exe发给朋友看一下来着,坑就来了。
1.首先声明我是python小白哈,一查,打包exe都是pyinstaller,那就pip install一个然后就直接打包了,
结果一直报错no module named cvzone等等,然后就查怎么解决嘛,又是spec文件隐式导入又是啥的,最后才知道我虚拟环境没开。。。。。。pyinstaller用的是全局环境的。
激活方式是在pycharm的cmd终端中进入到你项目目录下的venv目录下的script,然后输入“activate”命令,然后回车,成功后就像我这样头部有个(venv)

2.在venv环境中执行pyinstaller命令,发现打包出来的exe运行仍然报错

起初以为是测试用的图片文件夹路径问题,在哪相对路径、绝对路径、真实路径测啊测,发现错误依旧,折腾了两天,开始觉得不对劲了,看这个提示行数一行行的找过去,定位到了solution_base.py的254行,怀疑是这个binary_graph_path没找到。

我print一下,发现是指向的venv的sitepackage下面一个用到的包里面的东西。

然后我回去看了一下打包后的这个mediapipe文件夹,发现它下面只有一个python文件夹

索性,我就抱着试一试的心态,把venv的sitepackage下面mediapipe文件夹下的modules文件夹全给拷贝到这,双击exe运行,成功!!!!

总结:这次之所以搞那么久,一个是对python不熟悉,另外就是出错后第一个反应是自己的脚本有问题,就没怀疑第三方包,想着第三方包都这么成熟了应该不会出现这种问题。其实还猜测是不是pyinstaller有问题,为什么用到的东西没打包进去呢,不过也没法求证。

以上是关于python opencv pyinstaller踩坑日记的主要内容,如果未能解决你的问题,请参考以下文章

python opencv pyinstaller踩坑日记

怎样导入import cv2

Python打包方法——Pyinstaller (python3)

python_pyinstaller

python 使用pyinstaller打包程序

使用pyinstaller将python文件打包成exe文件