PaddleOCR 打包部署exe 心酸历程
- PaddleOCR部署exe模式
- PaddleOCR安装到本地(稍后有时间再写)
- PaddleOCR打包过程异常问题记录!!!!
- No such file or directory: 'D:\\py_project\\paddleOCR\\dist\\paddleOCR\\_internal\\paddleocr\\tools/__init__.py'
- ModuleNotFoundError: No module named 'pyclipper'
- ModuleNotFoundError: No module named 'shapely'
- ModuleNotFoundError:skimage
- exe运行后提示:"mklml.dll" 不存在或者路径不正确
- 剩下的包就是缺少那个就copy那个
- tqdm写入问题 AttributeError: 'NoneType' object has no attribute
- 最终效果
PaddleOCR部署exe模式
PaddleOCR安装到本地(稍后有时间再写)
PaddleOCR打包过程异常问题记录!!!!
No such file or directory: ‘D:\py_project\paddleOCR\dist\paddleOCR\_internal\paddleocr\tools/init.py’
这个比较好处理:打包命令添加
–collect-all paddleocr --collect-all paddlenlp
ModuleNotFoundError: No module named ‘pyclipper’
--collect-all pyclipper
ModuleNotFoundError: No module named ‘shapely’
--collect-all shapely
ModuleNotFoundError:skimage
--collect-all skimage
exe运行后提示:“mklml.dll” 不存在或者路径不正确
一般在项目工程里面:路径为:
你的项目 -> Lib -> site-packages -> paddle -> libs 下面可以找到 (注意:我这里是虚拟环境不是conda环境的需要具体看下载目录在哪里)
剩下的包就是缺少那个就copy那个
1.ModuleNotFoundError: No module named ‘imghdr’
解决办法:将python下面lib的imghdr.py文件拷贝到\ppocr\utils
(这里有个坑 paddle utils文件里面import imghdr 这里是没有引用的!!! 打开源码去掉)
2.ModuleNotFoundError: No module named ‘imgaug’
解决办法:将Lib\site-packages\imgaug下imgaug拷贝过去
3.ModuleNotFoundError: No module named ‘pywt’
解决办法:将Lib\site-packages\pywt拷贝过去
4.ModuleNotFoundError: No module named ‘lmdb’
解决办法:将Lib\site-packages\lmdb拷贝过去
5.ModuleNotFoundError: No module named ‘shaply’
解决办法:将Lib\site-packages\shaply拷贝过去
6.ModuleNotFoundError: No module named ‘pyclipper’
解决办法:将Lib\site-packages\pyclipper拷贝过去
tqdm写入问题 AttributeError: ‘NoneType’ object has no attribute
# network.py
File "tqdm\std.py", line 452, in fp_write
fp.write(str(s)) ^^^^^^^^
File "tqdm\utils.py", line 140, in __getattr__
return getattr(self._wrapped, name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute
这个错误是由于在尝试使用 tqdm 库(一个用于显示进度条的库)时,传入了一个 NoneType 对象作为文件指针。在 tqdm 库中,它期望一个文件对象(如 sys.stdout)来写入进度信息,但在你的代码中,由于某些原因,这个文件对象是 None
修改下源码即可
import io
buffer = io.StringIO()
sys.stdout = buffer
sys.stderr = buffer
最终效果
少数要改动源码,大部分都是从虚拟环境的库里找到相应文件夹拷贝到和可执行文件同目录即可,一下就是通常需要拷贝过来的文件夹
另外如果有连网的情况下会在管理员文件夹下的.paddleocr下载相应的推理文件,在打包paddleocr的时候发现 下载下来的推理文件文件夹.paddleocr是默认保存在用户下的管理员文件夹 打包的时候放在可执行文件同个目录没用 得更改paddleocr.py源码把BASE_DIR默认地址改为软件所在文件夹apppath,或者部署的时候把.paddleocr放到管理员所在文件夹
相关学习资料会同步上传需要的同学移步下。谢谢支持!!!!
可以互相学习或者需要帮忙处理的可添滴滴滴 _ !!!!