当前位置:   article > 正文

python解决paddleocr打包问题_pyinstaller怎么解决paddleocr中的动态导入

pyinstaller怎么解决paddleocr中的动态导入

虽然网上都有资料查询,但是都是单一问题,为了大家节省时间特意收集整理,多多点赞

1、首先确保是最新的库,因为最新的库修复了“”No module named 'tools'“问题,旧的代码库采用的是动态加载

  1. __dir__ = os.path.dirname(__file__)
  2. import paddle
  3. sys.path.append(os.path.join(__dir__, ''))
  4. def _import_file(module_name, file_path, make_importable=False):
  5. spec = importlib.util.spec_from_file_location(module_name, file_path)
  6. module = importlib.util.module_from_spec(spec)
  7. spec.loader.exec_module(module)
  8. if make_importable:
  9. sys.modules[module_name] = module
  10. return module
  11. tools = _import_file(
  12. 'tools', os.path.join(__dir__, 'tools\__init__.py'), make_importable=True)
  13. ppocr = importlib.import_module('ppocr', 'paddleocr')
  14. ppstructure = importlib.import_module('ppstructure', 'paddleocr')

2、使用pyinstaller -collect-all paddleocr --onefile main.py

3、找到spec文件在hiddenimports 添加

hiddenimports=['framework_pb2','scipy.special.cython_special','skimage','skimage.feature._orb_descriptor_positions','skimage.filters.edges', 'skimage.data._fetchers']'
运行

4、进入paddleocr修改

from ppstructure.predict_system import StructureSystem, save_structure_res, to_excel

from ppstructure.predict_system import StructureSystem, save_structure_res, to_excel,TextSystem

class PaddleOCR(predict_system.TextSystem)

class PaddleOCR(TextSystem)

5、pyinstaller main.spec

上面打包成功后会出现缺少mklml.dll文件,此文件在\paddle\libs 里面所以可以单独加载它也可以

可以用以下spec:

  1. block_cipher = None
  2. a = Analysis(['main.py'],
  3. pathex=['E:\\PyEnviroment\\Lib\\site-packages\\paddleocr', 'E:\\PyEnviroment\\Lib\\site-packages\\paddle\\libs'],
  4. binaries=[('E:\\PyEnviroment\\Lib\\site-packages\\paddle\\libs', '.')],
  5. datas=[],
  6. hiddenimports=['framework_pb2','scipy.special.cython_special','skimage','skimage.feature._orb_descriptor_positions','skimage.filters.edges', 'skimage.data._fetchers'],
  7. hookspath=['.'],
  8. runtime_hooks=[],
  9. excludes=['matplotlib'],
  10. win_no_prefer_redirects=False,
  11. win_private_assemblies=False,
  12. cipher=block_cipher,
  13. noarchive=False)
  14. pyz = PYZ(a.pure, a.zipped_data,
  15. cipher=block_cipher)
  16. exe = EXE(pyz,
  17. a.scripts,
  18. [],
  19. exclude_binaries=True,
  20. name='main',
  21. debug=False,
  22. bootloader_ignore_signals=False,
  23. strip=False,
  24. upx=True,
  25. console=True)
  26. coll = COLLECT(exe,
  27. a.binaries,
  28. a.zipfiles,
  29. a.datas,
  30. strip=False,
  31. upx=True,
  32. upx_exclude=[],
  33. name='main')

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/898248
推荐阅读
相关标签
  

闽ICP备14008679号