pyinstaller打包OpenCV错误解决

pyinstaller打包错误

        1、pyinstaller的安装方法:pip install PyInstaller

        一般的pyinstaller打包功能可参考:

        https://blog.csdn.net/zx520113/article/details/80926011

        2、最开始安装的是Annoconda,安装好后打包报错:

        Cannot find exiting PyQt5 plugin directores

        因为pyinstaller是python的,在Annoconda下运行会出问题,所以果断卸载Annoconda,重新安装去python官网下载安装https://www.python.org/downloads/。

        3、在Annoconda下打包其他的还遇到一个问题,报错:

        RecursionError:maxnum recursion depth exceeded

        在pyi-makespec main.py生成的main.spec文件中第二行添加

        import sys

        sys.setrecursionlimit(1000000)

        就可解决这个问题,但是打包依然有问题。

        4、在重新下载安装python3.6.6的时候,

        pip install opencv-python

        pip install opencv-contrib-python

        安装后,import cv2报错:

        ImportError: DLL load fialed找不到指定的模块

        这个问题在打包成功后,拷贝在其他电脑上运行也出现了这个问题,后来发现是因为在Windows\system32下缺少.dll文件

因为OpenCV的cv2.pyd文件中缺少东西,可以在这里下载:

          https://download.csdn.net/download/zx520113/10679870,资源中包含了一个打包示例文件,以及问题的解决文件。

        此链接中的缺失DLL查看,运行.exe文件,把cv2.pyd丢进去就可以看见缺失的dll文件,缺失的dll文件也可以在网上查找。将dll文件添加进Windows\system32就可以打包后程序运行出错问题。

        5、pyinstaller打包问题

        python pyinstaller打包,打包只有一个.py文件倒是没有问题,挺简单的,参考以下链接就可解决问题。

        https://blog.csdn.net/zx520113/article/details/80926011

        是我在打包多个文件的时候出现了问题,虽然提示打包成功,但是打包出来的文件并不能运行。查看了以下以及百度上的很多关于打包的问题的连接还是没有解决问题, 但是也可以从中学习借鉴打包方法,希望对大家有用。

        https://www.cnblogs.com/jackzz/p/9431923.html

        https://blog.csdn.net/djshichaoren/article/details/79801531

        https://blog.csdn.net/qq744746842/article/details/49404027

        后在pyinstaller的英文文档,通过pyinstaller main.spec文档进行打包,首先尝试简单的单个文件打包,打包成功,然后开始导入文件路径,输出路径是固定了的,输出路径如何变成相对路径倒是还没有解决,但是可以通过在界面上输入输出路径更改程序的输出路径。文件数据输入的相对路径已经解决,在打包的时候如果涉及到多个.py文件最好都放在更目录,放在根目录下的文件目录也行,但是要保证其运行没有问题。

        py文件在根目录下的文件目录打包:

        py文件都在根目录下的文件打包

        在打包的时候重要的设置就是:datas=[('D:\\zx\\Data\\','Data'),('D:\\zx\\Img\\','Img')]的设置,当然网上也有其他一些data是的导入方法,但是最后我通过这种方法导入文件目录数据并打包成功。

     通过在datas中定义('D:\\zx\\Data\\','Data'),就可以在程序中导入Data下的文件,程序中的导入写法,相对路径通过定义:file_name=".\\Data\\data.txt",img=".\\Img\\bak\\cut1.jpg"就可以导入Data下的所有文件了。

      总结:首先pyi-makespec main.py,然后再main.spec中配置路径datas路劲,然后cmd进入工程下路径pyinstaller main.spec,完成。其他的,如果要加图片或者一些其他的,也可以直接在main.spec中配置,或者在pyi-makespec main.py的时候就添加。简单的单个文件夹打包可以直接pyinstaller -F main.py打包,通过pyinstaller添加制定路径太繁琐的话,可以放在.txt文档中,然后另存为.bat文档,直接点击就可运行打包,直接pyinstaller打包试了一下,可能因为路径配置的不对老出错,具体的可以参考上面给出的链接。

猜你喜欢

转载自blog.csdn.net/zx520113/article/details/82793312