Files
SYNC_API/sync_api/verify_installation.py

109 lines
3.5 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
Script de verificación e instalación para la API de Monitoreo
"""
import sys
import subprocess
import importlib
import os
def check_python_version():
"""Verificar versión de Python"""
version = sys.version_info
if version.major < 3 or (version.major == 3 and version.minor < 8):
print("❌ Error: Se requiere Python 3.8 o superior")
return False
print(f"✅ Python {version.major}.{version.minor}.{version.micro} detectado")
return True
def check_package(package_name):
"""Verificar si un paquete está instalado"""
try:
importlib.import_module(package_name)
print(f"{package_name} instalado correctamente")
return True
except ImportError:
print(f"{package_name} no encontrado")
return False
def install_requirements():
"""Instalar dependencias desde requirements.txt"""
try:
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"])
print("✅ Dependencias instaladas correctamente")
return True
except subprocess.CalledProcessError:
print("❌ Error instalando dependencias")
return False
def check_env_file():
"""Verificar archivo .env"""
if os.path.exists('.env'):
print("✅ Archivo .env encontrado")
with open('.env', 'r') as f:
content = f.read()
if 'DATABASE_SERVER=' in content and 'DATABASE_NAME=' in content:
print("✅ Variables de entorno básicas configuradas")
return True
else:
print("⚠️ Archivo .env existe pero faltan variables importantes")
return False
else:
print("❌ Archivo .env no encontrado")
return False
def main():
"""Función principal de verificación"""
print("🔍 Verificando instalación de API de Monitoreo de Sincronización...")
print("=" * 60)
all_ok = True
# Verificar Python
if not check_python_version():
all_ok = False
# Verificar paquetes principales
packages = ['fastapi', 'uvicorn', 'pydantic', 'pyodbc']
for package in packages:
if not check_package(package):
print(f"Intentando instalar {package}...")
try:
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
if check_package(package):
print(f"{package} instalado exitosamente")
else:
all_ok = False
except:
all_ok = False
# Verificar archivo .env
if not check_env_file():
print(" Asegúrate de configurar las variables de base de datos en .env")
print("=" * 60)
if all_ok:
print("🎉 ¡Verificación completada exitosamente!")
print("\n🚀 Para iniciar la API ejecuta:")
print(" python -m uvicorn main:app --host 127.0.0.1 --port 8000 --reload")
print("\n📖 Documentación disponible en:")
print(" http://127.0.0.1:8000/docs")
# Intentar importar la configuración
try:
from config.settings import settings
print(f"\n⚙️ Configuración cargada para BD: {settings.database_name}")
except Exception as e:
print(f"\n⚠️ Error cargando configuración: {e}")
else:
print("❌ Se encontraron problemas. Revisa los errores anteriores.")
return all_ok
if __name__ == "__main__":
success = main()
if not success:
sys.exit(1)