Orlandinijunior's picture
Upload 6 files
c802af6 verified
# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import collect_all, copy_metadata
import os
# Defina o caminho raiz do seu projeto
project_root = 'C:\\Users\\User\\FINAL_ALPR_APP\\FINAL_ALPR_APP\\'
# Inclua dados adicionais como modelos, chaves de criptografia, sessões e ícones
datas = [
(os.path.join(project_root, 'paddleocr_models'), 'paddleocr_models'),
(os.path.join(project_root, 'best.pt'), '.'),
(os.path.join(project_root, 'decrypt_key.txt'), '.'),
(os.path.join(project_root, 'new_session.session'), '.'),
(os.path.join(project_root, 'SECRET_DATA.enc'), '.'),
(os.path.join(project_root, 'PaddleOCR/tools'), 'PaddleOCR/tools'),
(os.path.join(project_root, '.venv/Lib/site-packages/paddle/libs'), 'libs')
]
# Inclua as bibliotecas DLL do paddle manualmente, se necessário
paddle_libs_path = os.path.join(project_root, '.venv\\Lib\\site-packages\\paddle\\libs')
binaries = [
(os.path.join(paddle_libs_path, 'mklml.dll'), '.'),
(os.path.join(paddle_libs_path, 'libiomp5md.dll'), '.'),
(os.path.join(paddle_libs_path, 'common.dll'), '.'),
(os.path.join(paddle_libs_path, 'libblas.dll'), '.'),
(os.path.join(paddle_libs_path, 'libgcc_s_seh-1.dll'), '.'),
(os.path.join(paddle_libs_path, 'libgfortran-3.dll'), '.'),
(os.path.join(paddle_libs_path, 'liblapack.dll'), '.'),
(os.path.join(paddle_libs_path, 'libquadmath-0.dll'), '.'),
(os.path.join(paddle_libs_path, 'mkldnn.dll'), '.'),
(os.path.join(paddle_libs_path, 'warpctc.dll'), '.'),
(os.path.join(paddle_libs_path, 'warprnnt.dll'), '.'),
(os.path.join(project_root, 'msvcp140.dll'), '.'),
(os.path.join(project_root, 'vcruntime140.dll'), '.'),
(os.path.join(project_root, 'vcruntime140_1.dll'), '.')
]
# Importações ocultas e coleta de todas as dependências de pacotes complexos
hiddenimports = [
'paddle.base.libpaddle', 'cv2', 'kivy', 'telethon', 'cryptography', 'PyYAML', 'numpy', 'Pillow',
'cffi', 'pycparser', 'six'
]
# Recolha todas as dependências adicionais dos pacotes especificados
for package in ['paddle', 'paddleocr', 'libpaddle', 'pyclipper', 'imghdr', 'skimage', 'imgaug', 'scipy.io', 'lmdb', 'paddlepaddle', 'ultralytics']:
tmp_ret = collect_all(package)
datas += tmp_ret[0]
binaries += tmp_ret[1]
hiddenimports += tmp_ret[2]
# Inclui metadados críticos dos pacotes complexos
datas += copy_metadata('paddleocr')
datas += copy_metadata('telethon')
datas += copy_metadata('kivy')
a = Analysis(
[os.path.join(project_root, 'main.py')],
pathex=[],
binaries=binaries,
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
# Configuração do executável
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False, # False para janela sem console, True para janela com console
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=[os.path.join(project_root, 'app_icon.ico')],
)
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=True, # Defina como False se estiver tendo dificuldade com binários
upx_exclude=[],
name='main',
)