#!/usr/bin/env python3 """ Script para instalar tkinterweb con soporte JavaScript completo """ import subprocess import sys import importlib def check_installed(package_name): """Verifica si un paquete está instalado""" try: importlib.import_module(package_name) return True except ImportError: return False def install_package(package_spec): """Instala un paquete usando pip""" try: print(f"🔄 Instalando {package_spec}...") subprocess.check_call([sys.executable, "-m", "pip", "install", package_spec]) print(f"✅ {package_spec} instalado correctamente") return True except subprocess.CalledProcessError as e: print(f"❌ Error instalando {package_spec}: {e}") return False def main(): """Función principal""" print("🚀 Instalador de tkinterweb con JavaScript") print("=" * 50) # Verificar estado actual print("\n📊 Estado actual:") tkinterweb_available = check_installed("tkinterweb") pythonmonkey_available = check_installed("pythonmonkey") print(f" • tkinterweb: {'✅ Instalado' if tkinterweb_available else '❌ No instalado'}") print(f" • pythonmonkey: {'✅ Instalado' if pythonmonkey_available else '❌ No instalado'}") if tkinterweb_available and pythonmonkey_available: print("\n🎉 ¡Todo está instalado correctamente!") print(" La calculadora debería funcionar con JavaScript completo.") return print("\n🔧 Procediendo con la instalación...") # Instalar tkinterweb con JavaScript if not tkinterweb_available or not pythonmonkey_available: print("\n1️⃣ Instalando tkinterweb[javascript]...") success = install_package("tkinterweb[javascript]") if not success: print("\n⚠️ La instalación automática falló.") print(" Intenta manualmente:") print(" pip install tkinterweb[javascript]") print("\n Si hay problemas con PythonMonkey:") print(" 1. Asegúrate de tener Python 3.8+") print(" 2. En Windows, puede requerir Visual Studio Build Tools") print(" 3. En Linux, puede requerir build-essential") return # Verificar instalación final print("\n🔍 Verificando instalación...") tkinterweb_final = check_installed("tkinterweb") pythonmonkey_final = check_installed("pythonmonkey") print(f" • tkinterweb: {'✅' if tkinterweb_final else '❌'}") print(f" • pythonmonkey: {'✅' if pythonmonkey_final else '❌'}") if tkinterweb_final and pythonmonkey_final: print("\n🎉 ¡Instalación completada exitosamente!") print(" La calculadora MAV ahora puede usar JavaScript completo.") print(" Reinicia la aplicación para activar las funciones avanzadas.") else: print("\n⚠️ Instalación parcial.") print(" La calculadora funcionará en modo fallback.") print(" Consulta la documentación para resolver problemas de instalación.") if __name__ == "__main__": main()