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 --versiondebe 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é
🧹 0.1. Borrar entorno anterior
conda deactivate
conda remove --name nilmtk-env --all
🧼 0.2. Borrar cachés pip y temporales
rmdir /S /Q %USERPROFILE%\AppData\Local\pip\cache
rmdir /S /Q %USERPROFILE%\AppData\Local\pip\wheels
rmdir /S /Q C:\Users\carlo\nilmtk\build
rmdir /S /Q C:\Users\carlo\nilm_metadata\build
del /Q /F %TEMP%\*
🧱 PASO 1 – Crear entorno virtual limpio con Python 3.7.12
conda create -n nilmtk-env python=3.7.12
conda activate nilmtk-env
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.
📦 PASO 2 – Instalar dependencias compatibles
pip install numpy==1.18.5
pip install pandas==1.1.5
pip install scikit-learn==0.24.2
pip install h5py==2.10.0
pip install tables==3.6.1
pip install keras==2.4.3
pip install tensorflow==2.3.0
pip install ipykernel jupyter
🧪 PASO 3 – Instalar NILMTK (modo editable)
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
🧠 PASO 6 – Confirmar rutas de instalación
import nilmtk
print(nilmtk.__file__)
import nilm_metadata
print(nilm_metadata.__file__)
📓 PASO 7 – Habilitar entorno en Jupyter Notebook
🔧 7.1. Instalar ipykernel (si no lo hiciste ya)
pip install ipykernel
📚 7.2. Registrar el entorno como kernel de Jupyter
python -m ipykernel install --user --name nilmtk-env --display-name "Python 3.7 (nilmtk-env)"
Esto hace que el entorno aparezca como opción en Jupyter Notebook y en VS Code.
▶️ PASO 8 – Ejecutar notebooks con el kernel correcto
En Visual Studio Code:
- Abre tu
.ipynb - En la esquina superior derecha selecciona: scssCopiarEditar
Python 3.7 (nilmtk-env)
En Jupyter Notebook (navegador):
- Ejecuta en consola: bashCopiarEditar
jupyter notebook - Elige el kernel: scssCopiarEditar
Python 3.7 (nilmtk-env)
Dentro de Python escribe:
from nilmtk import DataSet
print("✅ NILMTK instalado correctamente.")
exit()
🗂️ Estructura recomendada de carpetas
En tu carpeta principal (por ejemplo: C:\Users\carlo\nilm_projects\), la estructura debe ser:
nilm_projects/
├── nilmtk/
├── nilm_metadata/
└── nilmtk-contrib/
INSTALACION NILMTK_CONTRIB
PASO 1 – Activar entorno y clonar repositorio
conda activate nilmtk-env
cd C:\Users\carlo
git clone https://github.com/nilmtk/nilmtk-contrib.git
cd nilmtk-contrib
📄 PASO 2 – Crear requirements.txt compatible
A. Método automático desde terminal (CMD o Anaconda Prompt):
echo matplotlib==3.2.2 > requirements.txt
echo scikit-learn==0.24.2 >> requirements.txt
echo tensorflow==2.3.0 >> requirements.txt
echo keras==2.4.3 >> requirements.txt
echo h5py==2.10.0 >> requirements.txt
echo tables==3.6.1 >> requirements.txt
echo pandas==1.1.5 >> requirements.txt
echo numpy==1.18.5 >> requirements.txt
B. O crea manualmente el archivo requirements.txt con este contenido:
matplotlib==3.2.2
scikit-learn==0.24.2
tensorflow==2.3.0
keras==2.4.3
h5py==2.10.0
tables==3.6.1
pandas==1.1.5
numpy==1.18.5
📥 PASO 3 – Instalar dependencias necesarias
pip install -r requirements.txt --no-deps
⚙️ PASO 4 – Instalar nilmtk-contrib en modo editable
pip install -e . --no-deps
Si todo ha ido bien, deberías ver:
Successfully installed nilmtk-contrib
✅ PASO 5 – Verificar instalación desde Python o Jupyter
Abre Jupyter en VSCode o navegador:
jupyter notebook
Y en una celda:
import nilmtk
import nilmtk_contrib
print("Todo funcionando correctamente.")

OTRAS ALTERNATIVAS
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:
conda deactivate
conda env remove -n nilmtk-env
conda clean --all --yes
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.3 45.
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
python=3.7: Versión de Python que ofrece buena compatibilidad con las dependencias más antiguas quenilmtk 0.4.3podría necesitar.numpy=1.19.5: Crucial paranilmtk 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. (Sinilmtk=0.4.3del canalnilmtkinsiste enpandas<1.0, Conda podría intentar degradarlo durante la instalación denilmtk).- Otras dependencias: Versiones específicas para evitar conflictos.
-c conda-forge: Usar el canalconda-forgepara 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 nilmtk 134.
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:
pip install git+https://github.com/nilmtk/nilmtk-metadata.git
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 .
conda install -c conda-forge tensorflow=2.4 cvxpy -y
- Verifica NumPy INMEDIATAMENTE después:
python -c "import numpy; print(numpy.__version__)" - 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.4no fue compatible con mantenernumpy=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-contriblocal no usa características muy nuevas de TensorFlow, podrías intentar la instalación denilmtk-contribsin TensorFlow preinstalado y ver sipippuede encontrar una solución (aunque esto es arriesgado). - O reconsiderar la necesidad de
nilmtk-contribsi este conflicto es irresoluble connilmtk 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:
pip install git+https://github.com/nilmtk/nilmtk-contrib.git
(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
.pydentro de tunilmtk-contriblocal que causan el error. - Cambia las importaciones. Por ejemplo:
from tensorflow.keras.layers.core import Activation->from tensorflow.keras.layers import Activationfrom 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):
pip install notebook ipykernel
python -m ipykernel install --user --name nilmtk-env --display-name "Python (nilmtk-env)"
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..

OPCION 2
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.com 4, 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.7y las dependencias base compatibles:
Nos basaremos en la configuración recomendada en la guía desoloelectronicos.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.5se usa aquí porque con Python 3.7 debería ser compatible. El conflicto anterior era específico denilmtk=0.4.3(del canalnilmtk) exigiendopandas<1.0. Si después de instalarnilmtkhay problemas, podríamos ajustarpandasa0.25.3.
- Activa el nuevo entorno:bash
C:\Users\carlo>conda activate nilmtk-env - Instala
nilmtk:
Ahora que el entorno base es más compatible, la instalación denilmtkdebería ser más sencillaconda install -c nilmtk nilmtk=0.4.3 -yEl requisito depandas<1.0denilmtk=0.4.3podría entrar en conflicto con elpandas=1.1.5que acabamos de instalar. Si es así, Conda debería intentar degradar Pandas. Si no puede, entonces elpandas=1.1.5en el comando de creación del entorno fue un mal consejo de la guía, y deberíamos haber usadopandas=0.25.3desde el principio con Python 3.7.Si el comando anterior falla debido a un conflicto con Pandas:
Intenta esto en su lugar, omitiendopandasen el comando de creación del entorno (paso 2) y dejando quenilmtklo 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_metadatadesde tu directorio local:
Una vez quenilmtky sus dependencias estén instalados, reinstalanilm_metadatadesde 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
nilmtkynilm_metadatade tus repositorios locales (instaladas probablemente conpip install -e .). Esto es evidente por las cadenas de versión que incluyendev1+git.... - Éxito en la importación: Lo más importante es que
from nilmtk import DataSetfunciona 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 errormodule 'numpy' has no attribute 'bool'al importarDataSetimplica que la combinación denilmtk 0.4.0.dev1+git.303d45b, la versión depandasque tiene, y la versión denumpyque tiene, son compatibles en este aspecto.- Esto podría significar que la versión de desarrollo de
nilmtkque estás usando ya no depende de partes depandasque usabannp.boolde forma problemática, o que la versión depandasque se instaló con ella ya maneja esto correctamente, o que la versión denumpyinstalada (que podría ser más nueva, compatible con los requisitos delsetup.pyde tunilmtkde desarrollo) es la quepandasespera.
- Esto podría significar que la versión de desarrollo de
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:python
import 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 tunilmtk 0.4.0.dev1+git.303d45b. - Instalación de
nilmtk-contrib:
Si ahora intentas instalarnilmtk-contribdesde tu repositorio local, el proceso podría ser más fluido si las dependencias denilmtk-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-contribconpip install -e .desde su directorio. - Presta atención a si
pipintenta cambiar tu versión actual de NumPy. Si lo hace, podrías volver a tener conflictos. Podrías necesitar instalartensorflowycvxpy(dependencias denilmtk-contrib) por separado usando Conda, intentando encontrar versiones que sean compatibles con tu NumPy actual, y luego instalarnilmtk-contribconpip install -e . --no-deps.
- Procede con cuidado, instalando
- 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.0o ligeramente superior pero compatible).
- Desinstalar las versiones editables (por ejemplo, navegando a cada directorio y usando
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.

OPCION 3
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_metadataynilmtk-contribsegún tus preferencias):- Clona o descarga los repositorios de
nilmtk-metadataynilmtk-contriba una ubicación conocida si planeas usar tus versiones locales.nilmtk-metadata:git clone https://github.com/nilmtk/nilm-metadata.gitnilmtk-contrib:git clone https://github.com/nilmtk/nilmtk-contrib.git(o la URL de tu fork/versión específica)
- Clona o descarga los repositorios de
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-envcon 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 paranilmtk 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.
- Explicación de versiones:
- Activar el Nuevo Entorno:
conda activate nilmtk-env
Fase 2: Instalación de NILMTK y NILM-Metadata
- Instalar
nilmtk(Versión Estable 0.4.3):conda install -c nilmtk nilmtk=0.4.3 -y- Nota:
nilmtk=0.4.3del canalnilmtkpodría tener una dependencia estricta depandas<1.0. Si es así, Conda intentará degradarpandas(p.ej., de1.1.5a0.25.3). Esto es aceptable y esperado.
- Nota:
- 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
- Opción A (Desde tu repositorio local):
- Verificación Intermedia:bash
python -c "import numpy; print(f'NumPy: {numpy.__version__}'); import pandas; print(f'Pandas: {pandas.__version__}'); import nilmtk; print(f'NILMTK: {nilmtk.__version__}'); import nilm_metadata; print(f'nilm_metadata: {nilm_metadata.__version__}')"- Verifica que NumPy sea
1.19.5, Pandas sea el esperado (p.ej.,1.1.5o<1.0), NILMTK sea0.4.3y nilm_metadata se importe.
- Verifica que NumPy sea
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 rompannumpy=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 denilmtk-contribpodrían intentarimport keras. Instalar el paquetekerasdeconda-forgepuede ayudar a resolver esto, ya que a menudo es un meta-paquete que se alinea con la versión de TF.
- Nota sobre Keras: Aunque TensorFlow 2.x incluye Keras (
- 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.xo más): El conflicto es profundo.- Alternativa: Intenta con una versión más antigua de TensorFlow (p. ej.,
tensorflow=2.3otensorflow=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 tunilmtk-contriblocal.
- Alternativa: Intenta con una versión más antigua de TensorFlow (p. ej.,
- Si NumPy sigue siendo
- Instalar
nilmtk-contrib(desde tu repositorio local):
Asumiendo que NumPy está intacto, instalanilmtk-contribsin quepipmaneje sus dependencias.bashcd RUTA_A_TU_REPOSITORIO_NILMTK_CONTRIB pip install -e . --no-deps - Modificar Código de
nilmtk-contribpara Importaciones de Keras/TensorFlow:
Si al intentar usarnilmtk-contrib(o durante la importación) obtienesModuleNotFoundErrorpara módulos comotensorflow.keras.layers.coreotensorflow.keras.layers.pooling:- Edita los archivos
.pydenilmtk-contribque causan el error. - Cambia las importaciones obsoletas a las rutas modernas. Ejemplos:
from tensorflow.keras.layers.core import Activation->from tensorflow.keras.layers import Activationfrom 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.
- Edita los archivos
Fase 4: Verificación Final y Uso
- Instalar Jupyter (Opcional):
pip install notebook ipykernel python -m ipykernel install --user --name nilmtk-env --display-name "Python (nilmtk-env)" - Prueba de Importación Completa:
Abre un intérprete de Python o un Jupyter Notebook usando el kernelnilmtk-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-contribcompatible con TensorFlow más antiguo (y por ende, NumPy 1.19.5). - Actualizar
nilmtka una versión más moderna (de desarrollo) que funcione con NumPy más nuevo, y luego adaptarnilmtk-contriba ese entorno. Esto es más complejo y nos devuelve a los problemas iniciales.
- Encontrar/adaptar una versión de
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.