首先要保证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 ———————————————— 版权声明:本文为CSDN博主「nbfw123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/nbfw123/article/details/123056593 |
|