paddleocr打包exe全过程详细介绍,包括遇到的问题及解决方案

本文介绍了在使用pyinstaller将PaddleOCR打包为exe程序时遇到的错误及其解决方案。错误包括模块找不到(如framework_pb2、ppocr、imghdr)以及yaml文件和subprocess相关问题。解决方法涉及复制相关库到exe同级目录,修改默认配置文件路径,以及调整代码以避免subprocess的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要保证paddleocr正确部署,并且能够在电脑上正常运行。
其次会用到一个叫pyinstaller的库,通过pip安装

pip install pyinstaller

    
    
  • 1

基础的命令是pyinstaller -D xxx.py。
其中,xxx.py是要打包的入口程序。关于pyinstaller的其他命令请自行百度,这里选择-D参数,会生成xxx.spec和xxx.exe程序,其中exe程序在dist/paddleocr文件下。后面大致流程是通过命令行运行exe看报错进行修改。

错误1:ModuleNotFoundError: No module named ‘framework_pb2’
这个解决办法是将环境中paddle和skimage包copy到exe程序同级目录下,这个操作比较直接,可能会把不想关的也移进去,但是解决问题啊。

错误2:ModuleNotFoundError: No module named ‘ppocr’
将环境下ppocr文件copy移过去,同上

错误3:ModuleNotFoundError: No module named ‘imghdr’
注意这个是py文件,环境里也能找到。

错误4:FileNotFoundError: [Errno 2] No such file or directory: ‘default_config.yaml’
代码中如果有调用yaml参数的操作时需要对该文件同级目录下__init__文件修改下:

def get_default_config():
	#注释掉第一句,改成第二句
    #config_file = osp.join(here, "default_config.yaml")
    config_file='default_config.yaml'

    
    
  • 1
  • 2
  • 3
  • 4

然后将yaml文件放置于exe同级目录下即可。

错误5:subprocess的错误。也是运行出现多个exe的问题

在虚拟环境下的这个文件中envs\paddle2.0\Lib\site-packages\paddle\dataset\image.py

if six.PY3:
    import subprocess
    import sys
    import_cv2_proc = subprocess.Popen(
        [sys.executable, "-c", "import cv2"],
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE)
    out, err = import_cv2_proc.communicate()
    retcode = import_cv2_proc.poll()
    if retcode != 0:
        cv2 = None
    else:
        import cv2
else:
    try:
        import cv2
    except ImportError:
        cv2 = None

    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

屏蔽以下代码,留下最后几行:

# if six.PY3:
#     import subprocess
#     import sys
#     import_cv2_proc = subprocess.Popen(
#         [sys.executable, "-c", "import cv2"],
#         stdout=subprocess.PIPE,
#         stderr=subprocess.PIPE)
#     out, err = import_cv2_proc.communicate()
#     retcode = import_cv2_proc.poll()
#     if retcode != 0:
#         cv2 = None
#     else:
#         import cv2
# else:
#     try:
#         import cv2
#     except ImportError:
#         cv2 = None
try:
    import cv2
except ImportError:
    cv2 = None

    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览 187800 人正在系统学习中
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值