-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlauncher.py
More file actions
40 lines (31 loc) · 1.4 KB
/
Copy pathlauncher.py
File metadata and controls
40 lines (31 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""Launcher de escritorio para el Python Data Science Program.
Qué resuelve:
Arranca la app Windows **nativa** del programa — ventana Qt con widgets
reales (PySide6), SIN levantar servidor HTTP, SIN navegador embebido,
SIN localhost. Es el entry point que ejecuta el instalador (Inno Setup)
y el bundle PyInstaller (``program.spec``).
Si el alumno quiere ejecutar código Python sobre los notebooks, lo hace
desde el laboratorio Flask + kernel Jupyter (módulo ``app``), que es una
superficie separada que se levanta con ``python -m app.app``. Esta app
desktop es solo para revisión del contenido (README, celdas, links a
PDF/PPTX/notebook).
"""
from __future__ import annotations
import sys
def main() -> int:
"""Entry point del .exe / del comando ``python launcher.py``."""
# Import tardío: PyInstaller detecta dependencias por análisis estático,
# pero queremos que un error de import de PySide6 produzca un mensaje
# claro y no un traceback antes de tener consola.
try:
from app_desktop.main import main as run
except ImportError as exc: # pragma: no cover - solo afecta a usuarios sin deps
sys.stderr.write(
"ERROR: No se pudo importar app_desktop. "
"Instalá PySide6 con `pip install PySide6`.\n"
f"Detalle: {exc}\n"
)
return 1
return run()
if __name__ == "__main__":
raise SystemExit(main())