El modo a prueba de fallos (modo seguro) de Windows 10 sirve para arrancar el sistema operativo con una configuración mínima, cargando solo los controladores y servicios esenciales. Esto permite diagnosticar y solucionar problemas que impiden que Windows funcione correctamente en modo normal. Básicamente aparte de diagnosticar problemas de arranque o funcionamiento ( su uso mas normal) podemos reparar errores causados por software o controladores, eliminar malware o software dañino y por supuesto realizar mantenimiento y recuperación del sistema cuando Windows no funciona normalmente.
Este modo facilita trabajar en un entorno controlado y básico para asegurar que los problemas no provienen de la configuración mínima del sistema operativo.
¿porque ya no funciona la tecla F8?
La razón por la que pulsar F8 para entrar en modo seguro ya no funciona por defecto en Windows 10 es porque Microsoft desactivó esta función para acelerar el proceso de arranque del sistema operativo. En versiones anteriores de Windows, la tecla F8 permitía acceder al menú de opciones avanzadas durante el arranque, pero desde Windows 8 en adelante, esta opción está deshabilitada por defecto para que el inicio sea más rápido.
Sin embargo, es posible reactivar la función de la tecla F8 mediante un comando en la consola con privilegios de administrador:
bcdedit /set {default} bootmenupolicy legacy
Después de ejecutar este comando y reiniciar, podrás usar F8 para acceder al modo seguro como en versiones anteriores.
Si no quieres activar esta función, Microsoft recomienda usar otras formas para entrar en modo seguro, como mantener pulsada la tecla Shift mientras haces clic en «Reiniciar» desde el menú de inicio, lo que lleva a las opciones avanzadas de recuperación donde puedes elegir el modo seguro.
Revertir el acceso a la tecla F8
Para desactivar nuevamente el acceso a la tecla F8 para entrar en modo seguro en Windows 10, debes revertir el cambio que habilita el método clásico. Los pasos son los siguientes:
Abre el Símbolo del sistema con privilegios de administrador:
Pulsa la tecla Windows, escribe cmd.
Haz clic derecho en Símbolo del sistema y selecciona Ejecutar como administrador.
Escribe el siguiente comando y pulsa Enter:textbcdedit /set {default} bootmenupolicy standard
Verás un mensaje indicando que la operación se completó correctamente.
Escribe exit para cerrar la ventana y reinicia el equipo.
Con esto, Windows 10 volverá a usar el arranque rápido estándar y la tecla F8 dejará de funcionar para acceder al menú de modo seguro, tal como está configurado por defecto en las versiones modernas del sistema operativo.
Este proceso es el inverso al que se usa para activar F8, y está documentado en diversas fuentes oficiales y tutoriales técnicos.
En resumen:
Motivo de que F8 no funcione
Solución para recuperar F8
Función desactivada para acelerar el arranque
Ejecutar bcdedit /set {default} bootmenupolicy legacy en CMD administrador
Uso recomendado actual
Mantener Shift + clic en Reiniciar para acceder a opciones avanzadas
Esta decisión busca mejorar la velocidad de inicio, aunque muchos usuarios prefieren la comodidad del método clásico con F8.
Modos de arrancar windows 10 en modo prueba de fallos actual
Para arrancar Windows 10 en modo a prueba de fallos (modo seguro), tienes varias opciones. La forma más recomendada y actual es la siguiente:
Desde el sistema operativo normalmente encendido:
Pulsa el botón de Inicio, luego el de Apagar, y mientras haces clic en «Reiniciar», mantén pulsada la tecla Shift.
El equipo se reiniciará y mostrará un menú de opciones avanzadas.
Selecciona Solucionar problemas > Opciones avanzadas > Configuración de inicio.
Pulsa el botón Reiniciar.
Cuando el equipo vuelva a arrancar, verás una lista de opciones. Pulsa la tecla 4 para iniciar en modo seguro básico o 5 para modo seguro con funciones de red (Internet).
Otra opción es usar la configuración del sistema:
Presiona Windows + R, escribe msconfig y pulsa Enter.
Ve a la pestaña Arranque.
Marca la casilla Arranque a prueba de errores y elige el tipo de modo seguro que quieres (mínimo o con red).
Pulsa Aceptar y luego Reiniciar para arrancar en modo seguro.
Si tu PC no arranca normalmente:
Enciende y apaga el equipo 3 veces seguidas durante el arranque para que Windows entre en modo de recuperación.
Desde ahí, sigue la ruta: Solucionar problemas > Opciones avanzadas > Configuración de inicio > Reiniciar y luego selecciona la opción de modo seguro.
El modo seguro inicia Windows con los controladores y servicios mínimos para facilitar la solución de problemas, y puedes elegir si quieres acceso a red para descargar herramientas o actualizaciones si fuera necesario.
Si quieres salir del modo seguro, solo tienes que reiniciar el equipo normalmente o desmarcar la opción de arranque seguro en msconfig.
Después de toda una odisea (el extracto esta mas abajo), creo es necesario una guía clara y concisa para replicar una instalación funcional de nilmtk, nilm_metadata y nilmtk-contrib en una nueva máquina Windows 11, minimizando los problemas.
Basándonos en toda la experiencia previa y las guías de los resultados de búsqueda, en este post he intentado ofrecer un enfoque consolidado y robusto sobre como instalar estos tres paquetes de python de software libre especializados en la disgregación de la energia eléctrica , tema que hemos tratado en numerosas ocasiones en este blog tanto a nivel hardware , como a nivel software. Se ha intentado priorizar la creación de un entorno base estable con versiones de paquetes que se sabe son compatibles, y luego instalar los componentes de NILMTK.
Tenemos en principio dos opciones:
Opción A — Conda (más sencilla, pero limitada)
conda install -c nilmtk nilmtk=0.4.3 -y
✅ Más fácil de instalar.
❌ Solo funciona si no hay conflictos con versiones de pandas, python, etc.
❌ Puede fallar en Windows por incompatibilidades del canal conda de nilmtk.
✅ No necesitas clonar el repositorio manualmente.
👉 Recomendada si funciona sin errores tras crear el entorno con python=3.7.
Opción B — Instalación desde GitHub (más flexible y robusta)
git clone https://github.com/nilmtk/nilmtk.git cd nilmtk python setup.py develop
✅ Te da más control.
✅ Puedes modificar código fuente de nilmtk.
✅ Obligatoria si usarás también nilmtk-contrib, que depende de modificar código fuente.
❗ Necesitas instalar manualmente las versiones compatibles de las dependencias (como pandas==0.25.3, numpy==1.18.5, etc.).
👉 Recomendada si quieres usar también nilmtk-contrib, o evitar errores con conda install. Dado que quremos instalar nilmtk, nilm_metadata y nilmtk-contrib, lo más robusto y estable es usar la Opción B (instalación desde GitHub) con dependencias bien controladas por pip.
OPCION B— INSTALACIÓN DE NILMTK EN WINDOWS (2025)
📌 Requisitos previos
Tienes instalado Anaconda o Miniconda(Miniconda es gratuito y funciona perfectamente).
Usas Windows 10 u 11.
Tienes Git instalado (git --version debe funcionar). Si no lo tienes descargalo e instala Git desde https://git-scm.com/download/win.
Tienes conexión a Internet.
Tener descargado desde Github los paquetes nilmtk, nilmtk_metadata y nilmtk_contrib (descargados y descomprimidos en carpetas colgado del directorio personal).
Microsoft Visual Studio Code con los complementos de Python y Jupyter Notebook (aconsejable)
GUÍA COMPLETA Y FUNCIONAL PARA INSTALAR NILMTK Y NILM_METADATA EN WINDOWS:
🔁 PASO 0 – Eliminar entorno anterior y limpiar caché
Problema posible:El error PackagesNotFoundError: The following packages are not available from current channels: - python=3.7.12 ocurre porque la versión específica de Python (3.7.12) que intentas instalar no está disponible en el canal defaults para Windows actualmente.
Soluciones 1. Usa una versión disponible de Python 3.7:En vez de pedir la versión exacta 3.7.12, puedes solicitar simplemente python=3.7, lo que instalará la versión 3.7 más reciente disponible en los canales configurados:
conda create -n nilmtk-env python=3.7 Esto suele ser suficiente para la mayoría de los casos y es la recomendación general de la documentación de conda.
2. Agrega canales adicionales (conda-forge) ACONSEJABLE:Algunas versiones antiguas solo están disponibles en otros canales como conda-forge. Puedes añadir este canal y luego intentar crear el entorno:
conda create -n nilmtk-env python=3.7.12 -c conda-forge Esto amplía las fuentes de paquetes y puede resolver el problema si el paquete existe en conda-forge.
3. Verifica versiones disponibles :Puedes consultar las versiones de Python disponibles para Windows-64 en conda-forge en la página oficial de Anaconda. Si ves que 3.7.12 no está disponible para win-64, deberás usar una versión diferente o cambiar de canal.
4. Considera usar una versión más reciente de Python :Si el paquete o proyecto lo permite, considera usar una versión más reciente de Python (por ejemplo, 3.9, 3.10, etc.), ya que las versiones antiguas pueden estar descontinuadas en los canales principales.
cd C:\Users\carlo\nilmtk pip install -e . --no-deps
🧪 PASO 4 – Instalar NILM Metadata (modo editable)
cd C:\Users\carlo\nilm_metadata pip install -e .
✅ PASO 5 – Verificar instalación
Abre Python o un notebook y ejecuta:
import nilmtk import nilm_metadata print("¡NILMTK y NILM Metadata funcionando correctamente!")
PROBLEMAS:El error ModuleNotFoundError: No module named 'networkx' indica que el módulo networkx no está instalado en el entorno donde estás ejecutando Jupyter y usando NILMTK.
Cómo solucionarlo Paso 1: Instalar networkx:Abre una terminal o usa una celda en Jupyter para instalar el paquete: pip install networkx O si usas conda (recomendado si NILMTK está en un entorno conda): conda install networkx Paso 2: Verifica que la instalación sea en el entorno correcto.Si usas un entorno conda llamado, por ejemplo, nilmtk-env, asegúrate de activarlo antes de instalar:
conda activate nilmtk-env conda install networkx O desde Jupyter, asegúrate de que el kernel que usas corresponde a ese entorno.
Paso 3 (opcional): Instalar todas las dependencias de NILMTK,Para evitar problemas con otros módulos faltantes, puedes instalar NILMTK con todas sus dependencias:
pip install nilmtk[all] O si lo instalaste desde conda-forge:
bash conda install -c conda-forge nilmtk El nuevo error ModuleNotFoundError: No module named 'matplotlib' indica que el paquete matplotlib no está instalado en tu entorno actual.
Solución Paso 1: Instalar matplotlib Abre una terminal o usa una celda en Jupyter y ejecuta:
bash pip install matplotlib O si usas conda:
bash conda install matplotlib Paso 2: Verifica el entorno activo Si usas un entorno conda, asegúrate de activarlo antes de instalar:
bash conda activate nilmtk-env conda install matplotlib Paso 3: Reinicia el kernel de Jupyter Después de instalar, reinicia el kernel para que los cambios tengan efecto.
Recomendación adicional Para evitar problemas con dependencias faltantes, puedes instalar todas las dependencias recomendadas para NILMTK con:
bash pip install nilmtk[all] O asegurarte de instalar todos los paquetes necesarios listados en la documentación oficial
La opción B, es la opción deseable mas probada y que debería funcionar , pero como este mundo es tan variable no siempre las cosas funcionan como quisiéramos , así que ahora os muestro algunas otras opciones se supone que deberían llegar al mismo final:
OPCION 1 ( NO SIEMPRE FUNCIONAL)
1. Limpieza (Opcional, pero recomendado si hubo intentos previos en la nueva máquina): Si ya has intentado instalar NILMTK en la nueva máquina y falló, es bueno empezar limpio. Abre «Anaconda Prompt» (o tu terminal configurada para Conda) y ejecuta:
2. Crear un Entorno Conda Base Compatible: Este es el paso más crucial. Crearemos un entorno con Python 3.7 y versiones específicas de las dependencias clave que son conocidas por su compatibilidad con nilmtk 0.4.345.
python=3.7: Versión de Python que ofrece buena compatibilidad con las dependencias más antiguas que nilmtk 0.4.3 podría necesitar.
numpy=1.19.5: Crucial para nilmtk 0.4.3 (requiere <1.20).
pandas=1.1.5: Una versión de Pandas que debería funcionar bien con NumPy 1.19.5 y Python 3.7. (Si nilmtk=0.4.3 del canal nilmtk insiste en pandas<1.0, Conda podría intentar degradarlo durante la instalación de nilmtk).
Otras dependencias: Versiones específicas para evitar conflictos.
-c conda-forge: Usar el canal conda-forge para obtener estos paquetes.
3. Activar el Nuevo Entorno:
conda activate nilmtk-env
4. Instalar nilmtk (Versión Estable de Conda): Instalaremos la versión 0.4.3 directamente desde el canal nilmtk134.
conda install -c nilmtk nilmtk=0.4.3 -y
Verifica si Conda intenta cambiar la versión de Pandas. Si es así y lo degrada a algo <1.0 (p.ej., 0.25.3), está bien, ya que nilmtk=0.4.3 podría requerirlo.
5. Instalar nilm_metadata desde tu Repositorio Local (si lo prefieres así): Si tienes un repositorio local de nilm_metadata que sabes que funciona y quieres usar:
cd RUTA_A_TU_REPOSITORIO_NILM_METADATA pip install -e .
Alternativamente, puedes instalarlo desde GitHub 4:
6. Instalar Dependencias de nilmtk-contrib (TensorFlow y CVXPY) con Conda (¡con cuidado!):<–OPCIONAL Este es el paso delicado. Necesitamos instalar tensorflow y cvxpy sin que rompan nuestro numpy=1.19.5.
Intentaremos con TensorFlow 2.4.x, que es una de las últimas versiones que podría ser compatible con NumPy 1.19.x .
Si NumPy sigue siendo 1.19.5 (o <1.20): ¡Perfecto! Procede al siguiente paso.
Si NumPy se actualizó: Esto indica un conflicto fundamental. La instalación de tensorflow=2.4 no fue compatible con mantener numpy=1.19.5. En este punto, tendrías que:
O bien, encontrar una versión aún más antigua de TensorFlow (y Keras) que sí sea compatible.
O, si tu nilmtk-contrib local no usa características muy nuevas de TensorFlow, podrías intentar la instalación de nilmtk-contrib sin TensorFlow preinstalado y ver si pip puede encontrar una solución (aunque esto es arriesgado).
O reconsiderar la necesidad de nilmtk-contrib si este conflicto es irresoluble con nilmtk 0.4.3.
7. Instalar nilmtk-contrib desde tu Repositorio Local (usando --no-deps): Asumiendo que el Paso 6 fue exitoso y NumPy está intacto:
cd RUTA_A_TU_REPOSITORIO_NILMTK_CONTRIB pip install -e . --no-deps
La opción --no-deps es crucial para evitar que pip intente reinstalar dependencias (como NumPy) que ya has configurado cuidadosamente con Conda.
Alternativamente, si no necesitas tu versión local y quieres probar la de GitHub 4:
(Pero esto podría traer sus propios problemas de dependencias si la rama principal de nilmtk-contrib ha avanzado).
8. Modificar nilmtk-contrib para Importaciones de Keras/TensorFlow (si es necesario): Puede ocurrir que tu nilmtk-contrib local podría usar rutas de importación obsoletas para Keras. Si, después de la instalación, obtienes errores como ModuleNotFoundError: No module named 'tensorflow.keras.layers.core' o ...tensorflow.keras.layers.pooling':
Navega a los archivos .py dentro de tu nilmtk-contrib local que causan el error.
Cambia las importaciones. Por ejemplo:
from tensorflow.keras.layers.core import Activation -> from tensorflow.keras.layers import Activation
from tensorflow.keras.layers.pooling import AveragePooling1D -> from tensorflow.keras.layers import AveragePooling1D
Repite para cualquier otra importación obsoleta de Keras.
9. Instalar Jupyter y Registrar el Kernel (Opcional, para uso con notebooks):
10. Verificar la Instalación Completa: Abre Python en tu entorno nilmtk-env y ejecuta el siguinte script: python import numpy print(f»NumPy: {numpy.__version__}») # Esperado: 1.19.5 import pandas print(f»Pandas: {pandas.__version__}») # Esperado: 1.1.5 o <1.0 (p.ej., 0.25.3) import tensorflow print(f»TensorFlow: {tensorflow.__version__}») # Esperado: ~2.4.x import nilm_metadata print(f»nilm_metadata: {nilm_metadata.__version__}») import nilmtk print(f»NILMTK: {nilmtk.__version__}») # Esperado: 0.4.3 from nilmtk import DataSet print(«NILMTK DataSet importado.») # Intenta importar un componente de nilmtk_contrib si la instalación fue exitosa # from nilmtk_contrib.disaggregate import CO # print(«Componente de nilmtk_contrib importado.») print(«¡Verificación completada!»)
Esta guía es un intento de consolidar las lecciones aprendidas. La clave es la creación de un entorno base con versiones muy específicas y el manejo cuidadoso de la instalación de nilmtk-contrib para no perturbar numpy. Si el conflicto de tensorflow con numpy=1.19.5 resulta ser insuperable (Paso 6), esa será la principal barrera para usar tu nilmtk-contrib local con nilmtk 0.4.3..
Una solución más robusta: Recrear el entorno con Python 3.7
Como los conflictos de dependencia con Python 3.8 pueden ser persistentes para las versiones más antiguas de Pandas que nilmtk=0.4.3 requiere, la estrategia más efectiva es recrear el entorno utilizando Python 3.7. Varias guías, incluida la de soloelectronicos.com4, sugieren explícitamente python=3.7 para una instalación más fluida de NILMTK y sus componentes más antiguos.
Desactiva y elimina el entorno actual:>conda deactivate C:\Users\carlo>conda env remove -n nilmtk-env C:\Users\carlo>conda clean --all --yes
Crea un nuevo entorno con python=3.7 y las dependencias base compatibles: Nos basaremos en la configuración recomendada en la guía de soloelectronicos.com4, que ha demostrado ser efectiva-C:\Users\carlo>conda create -n nilmtk-env python=3.7 numpy=1.19.5 pandas=1.1.5 matplotlib=3.1.3 scikit-learn=0.22.2.post1 h5py=2.10 pytables=3.6.1 networkx=2.5 pip -c conda-forge -y
Este comando crea un entorno con versiones específicas de Python y las principales bibliotecas científicas que se sabe que funcionan bien juntas para NILMTK.
pandas=1.1.5 se usa aquí porque con Python 3.7 debería ser compatible. El conflicto anterior era específico de nilmtk=0.4.3 (del canal nilmtk) exigiendo pandas<1.0. Si después de instalar nilmtk hay problemas, podríamos ajustar pandas a 0.25.3.
Activa el nuevo entorno:bashC:\Users\carlo>conda activate nilmtk-env
Instala nilmtk: Ahora que el entorno base es más compatible, la instalación de nilmtk debería ser más sencilla conda install -c nilmtk nilmtk=0.4.3 -y El requisito de pandas<1.0 de nilmtk=0.4.3 podría entrar en conflicto con el pandas=1.1.5 que acabamos de instalar. Si es así, Conda debería intentar degradar Pandas. Si no puede, entonces el pandas=1.1.5 en el comando de creación del entorno fue un mal consejo de la guía, y deberíamos haber usado pandas=0.25.3 desde el principio con Python 3.7.Si el comando anterior falla debido a un conflicto con Pandas: Intenta esto en su lugar, omitiendo pandas en el comando de creación del entorno (paso 2) y dejando que nilmtk lo traiga: # (Si estás rehaciendo desde el paso 1)# Paso 2 modificado: conda create -n nilmtk-env python=3.7 numpy=1.19.5 matplotlib=3.1.3 scikit-learn=0.22.2.post1 h5py=2.10 pytables=3.6.1 networkx=2.5 pip -c conda-forge -y# Paso 3: conda activate nilmtk-env# Paso 4: >conda install -c nilmtk -c conda-forge nilmtk=0.4.3 numpy=1.19.5 -y # Esto debería instalar nilmtk=0.4.3 y, como dependencia, pandas <1.0.
Reinstala nilm_metadata desde tu directorio local: Una vez que nilmtk y sus dependencias estén instalados, reinstala nilm_metadata desde la ubicación donde lo tienes descargado. cd RUTA_A_TU_REPOSITORIO_NILM_METADATA (nilmtk-env) C:\ruta\a\tu\repositorio\nilm_metadata>pip install -e .
Verifica la instalación completa: Ejecuta tu script de diagnóstico o prueba las importaciones manualmente en un intérprete de Python. import sys print(f"Python version: {sys.version}") # Debería ser ~3.7.x import numpy print(f"NumPy version: {numpy.__version__}") # Debería ser 1.19.5 import pandas print(f"Pandas version: {pandas.__version__}") # Debería ser <1.0 (p.ej., 0.25.3) import nilmtk print(f"NILMTK version: {nilmtk.__version__}") # Debería ser 0.4.3 import nilm_metadata print(f"nilm_metadata version: {nilm_metadata.__version__}") # Debería ser 0.2.5 from nilmtk import DataSet print("¡Importación de 'from nilmtk import DataSet' EXITOSA!")
Recrear el entorno con python=3.7 es la estrategia más prometedora en este punto, ya que la compatibilidad de pandas<1.0 con Python 3.8 parece ser el principal obstáculo con el paquete nilmtk=0.4.3 del canal nilmtk. La salida del script de diagnóstico deberia mostar:
Ruta del ejecutable de Python: c:\Users\carlo\anaconda3\envs\nilmtk-env\python.exe 'nilmtk' está instalado en este kernel: True (Versión: 0.4.0.dev1+git.303d45b) 'nilm_metadata' está instalado en este kernel: True (Versión detectada: 0.2.5) (Detalle: 'nilm-metadata' (pip style): True, 'nilm_metadata' (conda style): False) --- Intentando importar nilmtk y DataSet --- Versión de nilmtk importada: 0.4.0.dev1+git.303d45b Versión de nilm_metadata importada: 0.2.5.dev-7ed4bab from nilmtk import DataSet -- ¡ÉXITO!
Análisis de la situación :
Versiones de desarrollo locales: Estás utilizando las versiones de desarrollo de nilmtk y nilm_metadata de tus repositorios locales (instaladas probablemente con pip install -e .). Esto es evidente por las cadenas de versión que incluyen dev1+git....
Éxito en la importación: Lo más importante es que from nilmtk import DataSet funciona sin errores. Esto significa que, para estas versiones específicas que tienes, las dependencias principales (como NumPy y Pandas) están en un estado compatible.
No hay error de np.bool: El hecho de que no aparezca el error module 'numpy' has no attribute 'bool' al importar DataSet implica que la combinación de nilmtk 0.4.0.dev1+git.303d45b, la versión de pandas que tiene, y la versión de numpy que tiene, son compatibles en este aspecto.
Esto podría significar que la versión de desarrollo de nilmtk que estás usando ya no depende de partes de pandas que usaban np.bool de forma problemática, o que la versión de pandas que se instaló con ella ya maneja esto correctamente, o que la versión de numpy instalada (que podría ser más nueva, compatible con los requisitos del setup.py de tu nilmtk de desarrollo) es la que pandas espera.
Conclusión: Has logrado un entorno funcional utilizando las versiones de tus repositorios locales para nilmtk y nilm_metadata. Esto es genial porque querías usar estas versiones que sabías que funcionaban en Ubuntu. Posibles próximos pasos (opcional, solo si quieres instalar nilmtk-contrib o alinear con versiones de Conda):
Verificar versiones de NumPy y Pandas: Sería útil saber qué versiones de NumPy y Pandas están realmente activas en este entorno funcional. Puedes ejecutar:pythonimport numpy print(f"NumPy version: {numpy.__version__}") import pandas print(f"Pandas version: {pandas.__version__}") Esto te ayudará a entender qué combinación específica de estas dependencias es la que funciona con tu nilmtk 0.4.0.dev1+git.303d45b.
Instalación de nilmtk-contrib: Si ahora intentas instalar nilmtk-contrib desde tu repositorio local, el proceso podría ser más fluido si las dependencias de nilmtk-contrib (especialmente TensorFlow/Keras y sus requisitos de NumPy) son compatibles con las versiones de NumPy y Pandas que ya tienes en tu entorno.
Procede con cuidado, instalando nilmtk-contrib con pip install -e . desde su directorio.
Presta atención a si pip intenta cambiar tu versión actual de NumPy. Si lo hace, podrías volver a tener conflictos. Podrías necesitar instalar tensorflow y cvxpy (dependencias de nilmtk-contrib) por separado usando Conda, intentando encontrar versiones que sean compatibles con tu NumPy actual, y luego instalar nilmtk-contrib con pip install -e . --no-deps.
Alineación con versiones de Conda (si alguna vez lo necesitas): Si en el futuro quisieras pasar de tus versiones locales a las versiones de Conda (por ejemplo, nilmtk 0.4.3), tendrías que:
Desinstalar las versiones editables (por ejemplo, navegando a cada directorio y usando pip uninstall nilmtk, pip uninstall nilm-metadata).
Instalar las versiones de Conda (conda install -c nilmtk nilmtk=0.4.3, etc.).
Asegurarte de que NumPy y Pandas estén en versiones compatibles con nilmtk 0.4.3 (NumPy <1.20, Pandas <1.0 o ligeramente superior pero compatible).
Pero por ahora, ¡celebra que los componentes principales de NILMTK están funcionando! Ya puedes empezar a trabajar con tus datasets.Después de este extenso proceso, refinar la guía es una excelente idea. El objetivo es que sea lo más robusta y clara posible para futuras instalaciones o para otros usuarios.Aquí una versión mejorada de la guía, incorporando las lecciones aprendidas, especialmente sobre la compatibilidad de versiones y el manejo de nilmtk-contrib.
Guía para Instalar NILMTK, NILM-Metadata y NILMTK-Contrib en Windows 11
Esta guía se enfoca en usar versiones estables y conocidas de los componentes principales y aborda los problemas comunes de dependencia y las adaptaciones necesarias para nilmtk-contrib.
Requisitos Previos:
Anaconda o Miniconda: Instalado y añadido al PATH (o usar «Anaconda Prompt»).
Git para Windows: Instalado y accesible desde la línea de comandos.
Repositorios Locales (Opcional, pero asumido para nilm_metadata y nilmtk-contrib según tus preferencias):
Clona o descarga los repositorios de nilmtk-metadata y nilmtk-contrib a una ubicación conocida si planeas usar tus versiones locales.
nilmtk-contrib: git clone https://github.com/nilmtk/nilmtk-contrib.git (o la URL de tu fork/versión específica)
Fase 1: Creación y Configuración del Entorno Conda Base
Limpieza (Recomendado para una nueva máquina o después de intentos fallidos): Abre «Anaconda Prompt» (o tu terminal). conda deactivate conda env remove -n nilmtk-env conda clean --all --yes
Crear Entorno nilmtk-env con Python 3.7 y Dependencias Clave: Python 3.7 ofrece la mejor compatibilidad con las versiones de NILMTK y Pandas que buscamos. conda create -n nilmtk-env python=3.7 numpy=1.19.5 pandas=1.1.5 matplotlib=3.1.3 scikit-learn=0.22.2.post1 h5py=2.10 pytables=3.6.1 networkx=2.5 pip -c conda-forge -y
Explicación de versiones:
python=3.7: Base del entorno.
numpy=1.19.5: Requisito para nilmtk 0.4.3 (que es <1.20).
pandas=1.1.5: Versión compatible con NumPy 1.19.5 y Python 3.7.
Otras: Versiones específicas para estabilidad.
-c conda-forge: Esencial para la disponibilidad de estos paquetes.
Activar el Nuevo Entorno:conda activate nilmtk-env
Nota:nilmtk=0.4.3 del canal nilmtk podría tener una dependencia estricta de pandas<1.0. Si es así, Conda intentará degradar pandas (p.ej., de 1.1.5 a 0.25.3). Esto es aceptable y esperado.
Instalar nilm_metadata (desde tu local o GitHub):
Opción A (Desde tu repositorio local):cd RUTA_A_TU_REPOSITORIO_NILM_METADATA pip install -e .
Opción B (Desde GitHub, si no necesitas tu versión local):pip install git+https://github.com/nilmtk/nilm-metadata.git
Verifica que NumPy sea 1.19.5, Pandas sea el esperado (p.ej., 1.1.5 o <1.0), NILMTK sea 0.4.3 y nilm_metadata se importe.
Fase 3: Instalación de NILMTK-Contrib y sus Dependencias
Este es el paso más propenso a errores debido a TensorFlow.
Instalar Dependencias de nilmtk-contrib (TensorFlow, CVXPY) con Conda: El objetivo es instalar versiones compatibles que no rompan numpy=1.19.5. TensorFlow 2.4.x es una buena apuesta inicial. conda install -c conda-forge tensorflow=2.4 cvxpy keras -y
Nota sobre Keras: Aunque TensorFlow 2.x incluye Keras (tf.keras), algunas partes de nilmtk-contrib podrían intentar import keras. Instalar el paquete keras de conda-forge puede ayudar a resolver esto, ya que a menudo es un meta-paquete que se alinea con la versión de TF.
Verificar NumPy INMEDIATAMENTE después de instalar TensorFlow:python -c "import numpy; print(f'NumPy version tras TF: {numpy.__version__}')"
Si NumPy sigue siendo 1.19.5 (o <1.20): ¡Excelente! Procede.
Si NumPy se actualizó (p. ej., a 1.21.x o más): El conflicto es profundo.
Alternativa: Intenta con una versión más antigua de TensorFlow (p. ej., tensorflow=2.3 o tensorflow=2.2). Cada vez que lo hagas, verifica NumPy. Si ninguna versión de TF 2.x funciona sin romper NumPy 1.19.5, la compatibilidad es muy difícil de lograr para tu nilmtk-contrib local.
Instalar nilmtk-contrib (desde tu repositorio local): Asumiendo que NumPy está intacto, instala nilmtk-contrib sin que pip maneje sus dependencias.bashcd RUTA_A_TU_REPOSITORIO_NILMTK_CONTRIB pip install -e . --no-deps
Modificar Código de nilmtk-contrib para Importaciones de Keras/TensorFlow: Si al intentar usar nilmtk-contrib (o durante la importación) obtienes ModuleNotFoundError para módulos como tensorflow.keras.layers.core o tensorflow.keras.layers.pooling:
Edita los archivos .py de nilmtk-contrib que causan el error.
Cambia las importaciones obsoletas a las rutas modernas. Ejemplos:
from tensorflow.keras.layers.core import Activation -> from tensorflow.keras.layers import Activation
from tensorflow.keras.layers.pooling import AveragePooling1D -> from tensorflow.keras.layers import AveragePooling1D
Y así sucesivamente para otras capas (Dense, Conv2D, LSTM, etc.). Todas suelen estar directamente bajo tensorflow.keras.layers.
Guarda los cambios. Necesitarás hacer esto para cada importación obsoleta que encuentres.
Prueba de Importación Completa: Abre un intérprete de Python o un Jupyter Notebook usando el kernel nilmtk-env.python
import numpy
print(f"NumPy: {numpy.__version__}")
import pandas
print(f"Pandas: {pandas.__version__}")
import tensorflow
print(f"TensorFlow: {tensorflow.__version__}")
import nilm_metadata
print(f"nilm_metadata: {nilm_metadata.__version__}")
import nilmtk
print(f"NILMTK: {nilmtk.__version__}")
from nilmtk import DataSet
print("NILMTK DataSet importado.")
# Intenta importar un componente de nilmtk_contrib
try:
from nilmtk_contrib.disaggregate import CO # O cualquier otro que uses
print("Componente de nilmtk_contrib importado con éxito.")
except Exception as e_contrib:
print(f"Error al importar de nilmtk_contrib: {e_contrib}")
print("Revisa si necesitas hacer más correcciones de importación en nilmtk_contrib o si hay otro problema de dependencia.")
print("¡Configuración base de NILMTK lista!")
Consideraciones Adicionales:
Rutas de Repositorios Locales: Reemplaza RUTA_A_TU_REPOSITORIO_... con las rutas absolutas correctas.
Errores de Compilación (poco probables con este enfoque): Si algún paquete necesita compilación y falla (p. ej., pytables), asegúrate de tener las herramientas de compilación de C de Microsoft instaladas (Build Tools for Visual Studio).
Flexibilidad de nilmtk-contrib: Si el conflicto de TensorFlow/NumPy es insuperable, la única opción podría ser:
Encontrar/adaptar una versión de nilmtk-contrib compatible con TensorFlow más antiguo (y por ende, NumPy 1.19.5).
Actualizar nilmtk a una versión más moderna (de desarrollo) que funcione con NumPy más nuevo, y luego adaptar nilmtk-contrib a ese entorno. Esto es más complejo y nos devuelve a los problemas iniciales.
Esta guía intenta ser lo más determinista posible. La clave es el control estricto de las versiones de las dependencias críticas (Python, NumPy, Pandas, TensorFlow) a través de Conda antes de introducir los paquetes locales con pip.
Debe estar conectado para enviar un comentario.