赞
踩
首先要保证paddleocr正确部署,并且能够在电脑上正常运行。
其次会用到一个叫pyinstaller的库,通过pip安装
pip install pyinstaller
基础的命令是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'
然后将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
屏蔽以下代码,留下最后几行:
# 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。