一、首先在虚拟环境中能够成功运行,
二、关闭 多进程,否则当运行exe时电脑会有10多个 main.exe 进程,电脑内存占用直接90%。
找到所在环境下的 image.py 文件
我的是
“D:virtualenvOCRLibsite-packagespaddledatasetimage.py”
把这一部分代码 注释掉
```python
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
import os
因为会用到 cv2 ,所以cv2 要重新导入。
三、新建 spec 文件
gui.spec
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['gui.py'],
pathex=['D:\virtualenv\OCR\Lib\site-packages\paddleocr', 'D:\virtualenv\OCR\Lib\site-packages\paddle\libs'],
binaries=[('D:\virtualenv\OCR\Lib\site-packages\paddle\libs', '.')],
datas=[],
hiddenimports=[],
hookspath=['.'],
runtime_hooks=[],
excludes=['matplotlib'],
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='main',
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='main')
修改自己的路径,保存。
四、打包。
进入当前 gui.py 的运行环境,
pyinstaller -y gui.spec
打包完成后会在当前目录下有dist —》main 文件夹,
最后把运行环境下的 ppocr 文件夹,放到 main 文件下即可。
ppocr 文件夹 在 D:virtualenvOCRLibsite-packagespaddleocrppocr
打包结果



