112 lines
2.7 KiB
Python
112 lines
2.7 KiB
Python
# -*- mode: python ; coding: utf-8 -*-
|
|
import os
|
|
import sys
|
|
import glob
|
|
import paddleocr
|
|
|
|
block_cipher = None
|
|
|
|
# PaddlePaddle 경로
|
|
paddle_path = os.path.join(sys.prefix, 'Lib', 'site-packages', 'paddle')
|
|
paddle_libs_path = os.path.join(paddle_path, 'libs')
|
|
paddle_base_path = os.path.join(paddle_path, 'base')
|
|
|
|
# Cython 경로
|
|
cython_path = os.path.join(sys.prefix, 'Lib', 'site-packages', 'Cython')
|
|
cython_utility_path = os.path.join(cython_path, 'Utility')
|
|
|
|
# DLL 파일들 수집
|
|
binaries = []
|
|
|
|
# paddle/libs의 모든 DLL 파일들
|
|
for dll_file in os.listdir(paddle_libs_path):
|
|
if dll_file.endswith('.dll'):
|
|
src_path = os.path.join(paddle_libs_path, dll_file)
|
|
binaries.append((src_path, '.'))
|
|
|
|
# paddle/base의 libpaddle.pyd
|
|
libpaddle_pyd = os.path.join(paddle_base_path, 'libpaddle.pyd')
|
|
if os.path.exists(libpaddle_pyd):
|
|
binaries.append((libpaddle_pyd, '.'))
|
|
|
|
# 데이터 파일들 수집
|
|
datas = [
|
|
('modules', 'modules'),
|
|
('modules/PP_Models', 'modules/PP_Models'),
|
|
('modules/fonts', 'modules/fonts'),
|
|
('modules/iop/models', 'modules/iop/models'),
|
|
]
|
|
|
|
# Cython Utility 폴더의 모든 파일을 datas에 추가
|
|
if os.path.exists(cython_utility_path):
|
|
for f in glob.glob(os.path.join(cython_utility_path, '*')):
|
|
datas.append((f, os.path.join('Cython', 'Utility')))
|
|
|
|
# paddleocr 전체 소스 폴더 datas에 추가
|
|
paddleocr_path = os.path.dirname(paddleocr.__file__)
|
|
datas.append((paddleocr_path, 'paddleocr'))
|
|
# paddleocr/tools 폴더를 dist 루트에도 추가
|
|
datas.append((os.path.join(paddleocr_path, 'tools'), 'tools'))
|
|
|
|
a = Analysis(
|
|
['main.py'],
|
|
pathex=[],
|
|
binaries=binaries,
|
|
datas=datas,
|
|
hiddenimports=[
|
|
'paddle',
|
|
'paddleocr',
|
|
'paddle.base',
|
|
'paddle.base.core',
|
|
'paddle.base.framework',
|
|
'paddle.nn',
|
|
'paddle.nn.functional',
|
|
'numpy',
|
|
'cv2',
|
|
'PIL',
|
|
'requests',
|
|
'easyocr',
|
|
'matplotlib',
|
|
'scipy',
|
|
'skimage',
|
|
],
|
|
hookspath=[],
|
|
hooksconfig={},
|
|
runtime_hooks=[],
|
|
excludes=[
|
|
'Cython',
|
|
'Cython.Compiler',
|
|
'Cython.Utility',
|
|
],
|
|
noarchive=False,
|
|
optimize=0,
|
|
)
|
|
pyz = PYZ(a.pure)
|
|
|
|
exe = EXE(
|
|
pyz,
|
|
a.scripts,
|
|
[],
|
|
exclude_binaries=True,
|
|
name='ImageTranslateServer',
|
|
debug=False,
|
|
bootloader_ignore_signals=False,
|
|
strip=False,
|
|
upx=True,
|
|
console=False, # 🚫 콘솔 창 숨김 (노콘솔)
|
|
disable_windowed_traceback=False,
|
|
argv_emulation=False,
|
|
target_arch=None,
|
|
codesign_identity=None,
|
|
entitlements_file=None,
|
|
)
|
|
coll = COLLECT(
|
|
exe,
|
|
a.binaries,
|
|
a.datas,
|
|
strip=False,
|
|
upx=True,
|
|
upx_exclude=[],
|
|
name='ImageTranslateServer', # 📁 폴더 형태로 배포 (노윈도우)
|
|
)
|