pyinstaller打包paddleocr

327 阅读1分钟

最近在做一个图片水印识别的工具,使用的是paddleocr来完成的。

过程中遇到一个比较坑的点,正常流程打出来的包运行时报错, 但是直接执行py脚本又是没问题的。报错内容如下:

RuntimeError: `OCR` requires additional dependencies. To install them, run `pip install "paddlex[ocr]==<PADDLEX_VERSION>"if you’re installing `paddlex` from an index, or `pip install -e "/path/to/PaddleX[ocr]"if you’re installing `paddlex` locally

最后在github上找到答案,这里做一下记录:

打包脚本如下:

import subprocess
import os
import shutil
import sys

cmd = [
    r'C:\Python\python311\python.exe',
    '-m', 'PyInstaller',
    'main.py',  # 主脚本
    '--name', r'TestCheckImageWatermark',  # 工具名
    # '--onefile',  # 是否将包打成一个文件, 注释掉就是不打成一个文件
    # '--windowed',  # 是否开启调试窗口, 注释掉=开启

    '--collect-data', 'paddlex',
    '--copy-metadata', 'ftfy',
    '--copy-metadata', 'imagesize',
    '--copy-metadata', 'imagesize',
    '--copy-metadata', 'lxml',
    '--copy-metadata', 'opencv-contrib-python',
    '--copy-metadata', 'openpyxl',
    '--copy-metadata', 'premailer',
    '--copy-metadata', 'pyclipper',
    '--copy-metadata', 'pypdfium2',
    '--copy-metadata', 'scikit-learn',
    '--copy-metadata', 'shapely',
    '--copy-metadata', 'tokenizers',
    '--copy-metadata', 'einops',
    '--copy-metadata', 'jinja2',
    '--copy-metadata', 'regex',
    '--copy-metadata', 'tiktoken',
    '--add-binary', "C:\Python\python311\Lib\site-packages\paddle\libs;.",
    '--hidden-import', "scipy._cyutility",
    '--add-data', 'D:\pythonScripts\TestCheckImageWatermark\Configs;Configs',
    '-y',
]

subprocess.call(cmd)