pyinstaller快捷打包含ddddocr模块的程序,解决 onnxruntime_providers_shared.dll 、common.onnx缺少的问题
在用pyinstaller打包包含ddddocr模块的程序时,总是会弹出找不到onnxruntime_providers_shared.dll的错误,有时没有错误提示,成功打包,但程序不能正常运行,ddddocr模块不能正常运行,让人摸不到头脑。为解决这个问题,真是费了九牛二虎之力,最后才意识到,找不到这个文件,就用搜索呀,于是通过win搜索,找到了这个文件的位置
找到这个文件就好办了。
开始重新打包
pyinstaller -D 要打包的程序.py -p C:\Users\Administrator\AppData\Local\Programs\Python\Python310\Lib\site-packages
注意,(1)这里-D是打包成一个文件夹,如果想打包成一个单独的文件,请使用 -F
(2) -p后面跟的是依赖包的地址
(3)要打包的程序.py最后生成的默认地址是您的程序文件夹
一顿操作打完包后,找到 刚刚打包出来的 spec 文件,即 要打包程序.spec 。该文件为文本文件,记录了打包程序时的一些参数,使用 文本编辑器 打开该文件,然后找到data=[]参数。
在中括号内添加以下符串:(‘./onnxruntime_providers_shared.dll’,‘onnxruntime\capi’)
变成:
data = [(‘./onnxruntime_providers_shared.dll’,‘onnxruntime\capi’)]的形式。
然后,将 onnxruntime文件夹 复制到您要打包的程序文件夹内,即将该文件夹与您要打包的程序放在一起。
第二步:
pyinstaller -D 要打包的程序.spec
看一下生成的程序还能不能正常运行,如果不能正常运行,一般是缺少common.onnx文件和common_old.onnx文件,用上面的方法找到该文件,用同样的方法进行处理.spec文件里的data=[]项。
将文件夹下面的ddddocr复制入自己程序的文件夹,同时在data项下添加相应内容:
data = [(‘./onnxruntime_providers_shared.dll’,‘onnxruntime\capi’),(‘./common.onnx’,‘ddddocr’),(‘./common_old.onnx’,‘ddddocr’)]
再次运行
pyinstaller -D 要打包的程序.spec
Bingo,在dist文件夹中找到生成的exe文件,一般都能正常运行了。