pyinstaller快捷打包含ddddocr模块的程序,解决 onnxruntime_providers_shared.dll 、common.onnx缺少的问题

pyinstaller快捷打包含ddddocr模块的程序,解决 onnxruntime_providers_shared.dll 、common.onnx缺少的问题

在用pyinstaller打包包含ddddocr模块的程序时,总是会弹出找不到onnxruntime_providers_shared.dll的错误,有时没有错误提示,成功打包,但程序不能正常运行,ddddocr模块不能正常运行,让人摸不到头脑。报错提示为解决这个问题,真是费了九牛二虎之力,最后才意识到,找不到这个文件,就用搜索呀,于是通过win搜索,找到了这个文件的位置
onnxruntime_providers_shared.dll的位置 找到这个文件就好办了。

开始重新打包

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文件,一般都能正常运行了。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
根据你提供的代码片段,看起来你正在使用PyInstaller的Analysis类来指定要打包的文件和依赖项。在datas参数中,你尝试将'./onnxruntime_providers_shared.dll'与'onnxruntime\\capi'路径拼接在一起。 然而,根据你之前提供的错误信息,似乎在打包过程中出现了路径拼接错误。为了正确地拼接路径,你可以使用Python的os模块来处理路径。以下是一个示例代码: ```python import os from PyInstaller import Analysis # 获取当前文件所在目录的绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接要打包的文件的绝对路径 main_file = os.path.join(current_dir, 'main.py') qcysdk_file = os.path.join(current_dir, 'QCYSDK.py') # 拼接要打包的数据文件的绝对路径 dll_file = os.path.join(current_dir, 'onnxruntime_providers_shared.dll') data_path = os.path.join(current_dir, 'onnxruntime', 'capi') # 创建Analysis对象 a = Analysis( [main_file, qcysdk_file], pathex=['C:\\Users\\Administrator\\PycharmProjects\\pythonProject5\\venv\\Lib\\site-packages'], binaries=[], datas=[(dll_file, data_path)], ) ``` 通过使用`os.path.join()`函数来拼接路径,可以确保在不同操作系统上都能正确地处理路径分隔符。请根据你的实际情况修改代码,并确保各个文件的路径是正确的。 如果问题仍然存在,请提供更多关于你的项目结构和完整的错误信息,以便我能够更准确地帮助你解决问题
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃饭的家伙事儿

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值