# -*- 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', )