Pyinstaller - 如何捆绑 imagemagick , Tesserocr

Pyinstaller - how to bundle imagemagick , Tesserocr

我制作了一个 Python 工具(使用 PyQt)来处理使用 tesserocr 和 imagemagick wand 的扫描 pdf。我在我的系统上安装的 Tessorocr 和 imagemagick 可执行文件和工具在我的系统上运行良好。但现在我想把这个工具做成单一的可执行文件来与人们分享。这样他们就不需要单独安装Imagemagick和Tesserocr了。

我从几天前就一直在寻找这个问题,但找不到具体的答案。

我尝试了一些提示。 使用依赖的二进制文件创建 SPEC 文件 更新 imagemagick 的环境变量 os.environ['MAGICK_HOME'] = './'

但还是无法制作单个exe

二进制文件路径:

Imagemagcik - C:\Program Files\ImageMagick-7.0.10-Q16 
TessorOCR - C:\Program Files\Tesseract-OCR

我的规格文件看起来像:

a = Analysis(['form.py'],
             pathex=['C:\Users\usrname\nlp_repo\src'],
             binaries=[('C:\Program Files\ImageMagick-7.0.10-Q16\magick.exe', 'wand') ,
             ('C:\Program Files\Tesseract-OCR\tesseract.exe', 'tesserocr')],
             datas = [ ('C:/Users/usrname/nlp_repo/src/download.png') ],
             hiddenimports=[], hookspath=[],
             runtime_hooks=[], excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='form',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               upx_exclude=[],
               name='form')

Pyinstaller 错误- format_binaries_and_datas 对于 src_root_path_or_glob、trg_root_dir 在 binaries_or_datas 中: ValueError:要解压的值太多。

我不确定是否应该在我的 Form.SPEC 文件中包含更多设置,以及应该为 imagemagcik 和 tesserocr 二进制文件传递多少个 exe 以使其可执行。

任何步骤指南都会有所帮助。 提前谢谢你

我已经解决了这个问题。要在本地系统上安装 Python 工具 运行,我执行了以下步骤

  1. 设置os.environ['MAGICK_HOME'] = './'
  2. 设置 tessor OCR 的隐藏导入python pkg 依赖项
  3. 正在将 setuptools 升级到 > 45.0.0.0 (pip install --upgrade setuptools)
a = Analysis(['form.py'],
             pathex=['C:\Users\usrname\nlp_repo\src'],
             binaries=[],
             datas = [ ('C:\Users\usrname\nlp_repo\src\download.png', '.') ],
             hiddenimports=['PyTessBaseAPI'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
.....

二进制文件可以独立捆绑(通过在规范文件中设置二进制文件),然后目标系统用户可以单独安装它,然后可以轻松地使用 Python 使用 Pyinstaller 生成的工具。

Jsh