Files
PyQt6_LaTaniere/La Tanière Launcher.spec

267 lines
5.8 KiB
Python

# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['src\\main.py'],
pathex=['src'],
binaries=[],
datas=[
('.\\styles\\styles.qss', 'styles'),
('.\\ui\\mainwindow_vertical_pager.ui', 'ui')
],
hiddenimports=[
"asyncio",
"pypresence",
"pypresence.baseclient",
],
hookspath=[],
hooksconfig={
"qt_plugins": ["platforms", "styles"]
},
runtime_hooks=[],
excludes=[
# PySide6 - modules non utilisés
'PySide6.Qt3DAnimation',
'PySide6.Qt3DCore',
'PySide6.Qt3DExtras',
'PySide6.Qt3DInput',
'PySide6.Qt3DLogic',
'PySide6.Qt3DRender',
'PySide6.QtAxContainer',
'PySide6.QtBluetooth',
'PySide6.QtCharts',
'PySide6.QtConcurrent',
'PySide6.QtDataVisualization',
'PySide6.QtDesigner',
'PySide6.QtHelp',
'PySide6.QtLocation',
# 'PySide6.QtMultimedia', # Nécessaire pour l'audio
'PySide6.QtMultimediaWidgets',
# 'PySide6.QtNetwork', # Dépendance à QtMultimedia
'PySide6.QtNetworkAuth',
'PySide6.QtNfc',
'PySide6.QtOpenGL',
'PySide6.QtOpenGLWidgets',
'PySide6.QtPdf',
'PySide6.QtPdfWidgets',
'PySide6.QtPositioning',
'PySide6.QtPrintSupport',
'PySide6.QtQml',
'PySide6.QtQuick',
'PySide6.QtQuick3D',
'PySide6.QtQuickControls2',
'PySide6.QtQuickWidgets',
'PySide6.QtRemoteObjects',
'PySide6.QtScxml',
'PySide6.QtSensors',
'PySide6.QtSerialBus',
'PySide6.QtSerialPort',
'PySide6.QtSpatialAudio',
'PySide6.QtSql',
'PySide6.QtStateMachine',
'PySide6.QtSvg',
'PySide6.QtSvgWidgets',
'PySide6.QtTest',
'PySide6.QtTextToSpeech',
'PySide6.QtWebChannel',
'PySide6.QtWebEngineCore',
'PySide6.QtWebEngineQuick',
'PySide6.QtWebEngineWidgets',
'PySide6.QtWebSockets',
'PySide6.QtXml',
# Tests / dev tools
"test",
"tests",
"unittest",
"doctest",
"pydoc",
"pydoc_data",
# Packaging / build tooling
"distutils",
"setuptools",
"pkg_resources",
"pip",
"ensurepip",
# GUI stdlib inutiles
"tkinter",
"turtle",
"idlelib",
"curses",
# Legacy / obsolete
"lib2to3",
"2to3",
"nis",
"ossaudiodev",
"spwd",
# RPC / servers non utilisés
"xmlrpc",
"wsgiref",
"cgi",
"cgitb",
# Data / DB non utilisés
"sqlite3",
"dbm",
"dbm.dumb",
"csv",
# Concurrency non utilisée dans ton code
"multiprocessing",
#"concurrent",
#"asyncio",
# REPL / terminal
"readline",
"code",
# "codeop", # Nécessaire
"cmd",
# mail / network protocols non utilisés
"mailbox",
"imaplib",
"poplib",
"smtplib",
"nntplib",
"telnetlib",
"ftplib",
"netrc",
# Docs / browsing / parsing non utilisés directement
"pydoc_data",
"mailbox",
"imaplib",
"poplib",
"smtplib",
"nntplib",
"telnetlib",
# XML optionnel : agressif mais plutôt safe ici
"xml.dom",
"xml.etree",
"xml.parsers",
"xml.sax",
# Compression / archive optionnelles si non utilisées
"bz2",
"lzma",
"gzip",
#"zipfile", # Nécessaire à cause de pyinstaller
"tarfile",
"zipapp",
# audio stdlib non utilisée
"aifc",
"wave",
"sunau",
"chunk",
# divers peu probables
"mailcap",
"xdrlib",
"tabnanny",
"getpass",
# Windows services non utilisés
"win32service",
"win32serviceutil",
],
noarchive=False,
optimize=2,
)
# --- Filtre des DLLs Qt inutiles ---
# Ces DLLs sont incluses par analyse binaire malgré les excludes Python
unwanted_dlls = [
'Qt6Pdf',
'Qt6Quick',
'Qt6Qml',
'Qt6QmlModels',
'Qt6QmlWorkerScript',
'Qt6WebEngine',
'Qt6WebEngineCore',
'Qt63DCore',
'Qt63DRender',
'Qt63DAnimation',
'Qt63DExtras',
'Qt63DInput',
'Qt63DLogic',
'Qt6Charts',
'Qt6DataVisualization',
'Qt6Bluetooth',
'Qt6Nfc',
'Qt6Positioning',
'Qt6Location',
'Qt6RemoteObjects',
'Qt6Scxml',
'Qt6Sensors',
'Qt6SerialBus',
'Qt6SerialPort',
'Qt6SpatialAudio',
'Qt6StateMachine',
# 'Qt6Svg', # Dependance lecteur svg
'Qt6TextToSpeech',
'Qt6WebChannel',
'Qt6WebSockets',
'Qt6Sql',
'Qt6Test',
# 'Qt6OpenGL', # Dependance a Qt6UiTools
'Qt6PrintSupport',
# 'Qt6Xml', # Dependance fichier .ui
'Qt6Help',
'Qt6Designer',
'Qt6Concurrent',
]
a.binaries = [
(name, path, typecode)
for name, path, typecode in a.binaries
if not any(u.lower() in name.lower() for u in unwanted_dlls)
]
# AJOUTE CECI ICI :
# On filtre la liste des fichiers de données (datas)
# On exclut tout ce qui se trouve dans le dossier 'translations' de PySide6
a.datas = [f for f in a.datas if "translations" not in f[0].lower()]
# Si tu veux aussi supprimer les traductions système de Qt (fichiers .qm)
a.datas = [f for f in a.datas if not f[0].endswith('.qm')]
pyz = PYZ(a.pure, a.zipped_data)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='La Tanière Launcher',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[
"_uuid.pyd",
"Qt6Core.dll",
"Qt6Gui.dll",
"Qt6Widgets.dll",
"Qt6UiTools.dll",
"qwindows.dll",
"python3*.dll",
"vcruntime*.dll",
"msvcp*.dll",
],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=True,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['assets\\Icon.ico'],
)