import sys
import os

# Forzar la inclusión de site-packages en sys.path (busca entornos virtuales comunes relativos al repo)
repo_root = os.path.dirname(os.path.abspath(__file__))
candidates = [
    os.path.join(repo_root, '.venv', 'Lib', 'site-packages'),
    os.path.join(repo_root, 'veny', 'Lib', 'site-packages'),
    os.path.join(repo_root, 'venv', 'Lib', 'site-packages'),
]
venv_site_packages = None
for path in candidates:
    if os.path.isdir(path):
        venv_site_packages = path
        break
# Si no se encuentra, intentar usar el site-packages del ejecutable actual
if not venv_site_packages:
    possible = os.path.join(sys.prefix, 'Lib', 'site-packages')
    if os.path.isdir(possible):
        venv_site_packages = possible

if venv_site_packages and venv_site_packages not in sys.path:
    sys.path.insert(0, venv_site_packages)

# Función para buscar carpetas relacionadas con un módulo
def find_module_path(module_name):
    for root, dirs, files in os.walk(venv_site_packages):
        for name in dirs:
            if module_name in name.lower():
                return os.path.join(root, name)
    return None

# Verificar e importar módulos
# Intentar importar el módulo proporcionado por fusepy (puede llamarse 'fuse')
fuse_ok = False
try:
    import fuse
    print("✓ Módulo 'fuse' importado correctamente (fusepy)")
    fuse_ok = True
except ImportError:
    try:
        import fusepy
        print("✓ Módulo 'fusepy' importado correctamente")
        fuse_ok = True
    except ImportError as e:
        # Buscar carpeta 'fuse' o 'fusepy' dentro del site-packages del venv
        fuse_path = find_module_path("fuse") or find_module_path("fusepy")
        if fuse_path:
            sys.path.insert(0, fuse_path)
            try:
                import fuse
                print("✓ Módulo 'fuse' importado correctamente después de ajustar sys.path")
                fuse_ok = True
            except Exception as e2:
                try:
                    import fusepy
                    print("✓ Módulo 'fusepy' importado correctamente después de ajustar sys.path")
                    fuse_ok = True
                except Exception as e3:
                    print(f"✗ Error al importar fuse/fusepy incluso después de ajustar sys.path: {e3}")
        else:
            print(f"✗ Error al importar fuse/fusepy: {e}")

try:
    import numpy
    print("✓ Módulo numpy importado correctamente")
except ImportError as e:
    print(f"✗ Error al importar numpy: {e}")

try:
    import PIL
    print("✓ Módulo Pillow importado correctamente")
except ImportError as e:
    print(f"✗ Error al importar Pillow: {e}")
