En efecto es posible replicar en Windows 11 un entorno Python de Ubuntu como por ejemplo toda la Instalación de NILMTK o incluso NILMTK_CONTRIB
Para replicar tu instalación de NILMTK de Ubuntu en Windows 11 utilizando el Subsistema de Windows para Linux (WSL), sin Conda pero con Jupyter Notebook, y ya disponiendo del fichero requirements.txt y las carpetas nilmtk, nilm_metadata y nilmtk-contrib, puedes seguir estos pasos:
1. Preparar el Entorno WSL
Asegúrate de que tu distribución de Linux en WSL (por ejemplo, Ubuntu) tenga Python 3.6+ y pip instalados. NILMTK requiere Python 3.6 o superior.
- Puedes verificar las versiones con
python3 --versionypip3 --version. - Si es necesario, instálalos o actualízalos. Para Ubuntu en WSL, puedes usar:bash
sudo apt update sudo apt install python3 python3-pip
2. Instalar Jupyter Notebook en WSL
Instala Jupyter Notebook usando pip en tu terminal WSL:
- Ejecuta el comando:bash
pip3 install jupyterEsto instalará Jupyter en tu espacio de usuario5. - Es posible que necesites añadir
~/.local/bina tu variable de entorno PATH si los comandos de Jupyter no se encuentran. Edita tu archivo~/.bashrc(o~/.zshrcsi usas Zsh) y añade la siguiente línea:bashexport PATH="$HOME/.local/bin:$PATH"Luego, aplica los cambios consource ~/.bashrc(osource ~/.zshrc)4.
3. Configurar las Carpetas y Dependencias de NILMTK
Copiar carpetas:
Transfiere tus carpetas nilmtk, nilm_metadata y nilmtk-contrib a un directorio de proyecto adecuado dentro del sistema de archivos de WSL (por ejemplo, ~/mi_proyecto_nilmtk/).
Instalar dependencias desde requirements.txt:
Navega en la terminal WSL al directorio donde se encuentra tu archivo requirements.txt (probablemente dentro de ~/mi_proyecto_nilmtk/). Luego, instala las dependencias:
bashcd ~/mi_proyecto_nilmtk
pip3 install -r requirements.txt
Si encuentras errores relacionados con la compilación de paquetes, es posible que necesites instalar herramientas de compilación. En Ubuntu WSL, esto se puede hacer con: sudo apt install build-essential.
Instalar nilm_metadata y nilmtk en modo desarrollo:
Esto permite que Python encuentre los paquetes en las carpetas que has copiado.
- Para
nilm_metadata(asumiendo que «nilmk-metadata» es un error tipográfico):bashcd ~/mi_proyecto_nilmtk/nilm_metadata # Ajusta la ruta si es diferente python3 setup.py develop - Para
nilmtk:bashcd ~/mi_proyecto_nilmtk/nilmtk # Ajusta la ruta si es diferente python3 setup.py developLa instalación en modo desarrollo (develop) es útil para asegurar que los cambios en el código fuente se reflejen inmediatamente sin necesidad de reinstalar2.
Carpeta nilmtk-contrib:
El manejo de la carpeta nilmtk-contrib dependerá de su contenido. Si contiene paquetes Python adicionales con sus propios archivos setup.py, podrías necesitar instalarlos de manera similar. Si son datos o scripts, asegúrate de que estén en una ubicación accesible para tu proyecto.
4. Ejecutar Jupyter Notebook desde WSL
Navega en tu terminal WSL al directorio de tu proyecto (donde deseas que Jupyter Notebook acceda a los archivos y donde se guardarán los nuevos notebooks), por ejemplo, ~/mi_proyecto_nilmtk/.
- Inicia Jupyter Notebook con el siguiente comando:bash
jupyter notebook --no-browserLa opción--no-browserevita que WSL intente abrir un navegador en el entorno Linux, lo cual generalmente no es deseado46. - La terminal mostrará un mensaje con una o más URLs, usualmente comenzando con
http://localhost:8888/e incluyendo un token de seguridad46. Copia una de estas URLs completas. - Abre un navegador web en Windows 11 (como Edge, Chrome o Firefox) y pega la URL copiada en la barra de direcciones.
5. Verificar la Instalación de NILMTK
Dentro de la interfaz de Jupyter Notebook en tu navegador:
- Crea un nuevo notebook de Python 3.
- En una celda de código, ejecuta:python
import nilmtk print(nilmtk.__version__) - Si no aparecen errores y se muestra la versión de NILMTK, la instalación se ha replicado correctamente y NILMTK está listo para usarse1.
Siguiendo estos pasos, deberías poder replicar tu entorno NILMTK en WSL en Windows 11, utilizando tus archivos y carpetas existentes y cumpliendo con tus requisitos de no usar Conda y sí Jupyter Notebook.

A veces a pesar de todo y seguir al pie de las letra los manuales no salen bien las cosas, A continuación algunos de los errores que podemos tener en la instalación:
Error externally-managed-environment
El error error: externally-managed-environment que estás viendo indica que tu sistema Linux (dentro de WSL) gestiona los paquetes de Python a través de su propio administrador de paquetes (como apt en Ubuntu/Debian) para evitar conflictos y asegurar la estabilidad del sistema 145. Por lo tanto, pip no te permite instalar paquetes globalmente por defecto.
La forma recomendada y más segura de proceder es crear un entorno virtual. Esto aislará tu proyecto de NILMTK y sus dependencias, incluyendo Jupyter, del Python del sistema 45.
Aquí te explico cómo continuar:
METODO 1
1. Crear y Activar un Entorno Virtual en WSL
En tu terminal WSL, antes de intentar instalar Jupyter o cualquier otro paquete con pip, crea un entorno virtual. Es una buena práctica hacerlo dentro de tu directorio de proyecto.
- Navega a tu directorio de proyecto (donde tienes las carpetas
nilmtk,nilm_metadata,nilmtk-contriby turequirements.txt):bashcd ~/mi_proyecto_nilmtk # O la ruta donde hayas puesto tus archivos - Crea el entorno virtual (puedes llamarlo
venv_nilmtko como prefieras):bashpython3 -m venv venv_nilmtkEs posible que necesites instalar primero el paquetepython3-venvsi no está disponible:sudo apt install python3-venv5. - Activa el entorno virtual:bash
source venv_nilmtk/bin/activateUna vez activado, tu prompt de la terminal debería cambiar para indicar que estás dentro del entorno virtual (por ejemplo,(venv_nilmtk) canjayar@carlosrn:...$).
2. Instalar Jupyter y tus Dependencias Dentro del Entorno Virtual
Ahora que el entorno virtual está activo, pip (o python -m pip) instalará los paquetes dentro de este entorno aislado, sin afectar al sistema global.
- Instala Jupyter Notebook:bash
pip install jupyter(Dentro de un entorno virtual activado, generalmentepipse refiere alpipdel entorno, que corresponde a la versión de Python con la que se creó el entorno). - Instala las dependencias de NILMTK desde tu archivo
requirements.txt:bashpip install -r requirements.txt - Instala
nilm_metadataynilmtken modo desarrollo (como se indicó anteriormente, pero ahora dentro del entorno virtual):bashcd nilm_metadata # Ajusta la ruta si es diferente python setup.py develop cd ../nilmtk # Ajusta la ruta si es diferente python setup.py develop cd .. # Vuelve al directorio raíz de tu proyecto
3. Ejecutar Jupyter Notebook
Con el entorno virtual aún activado:
- Inicia Jupyter Notebook:bash
jupyter notebook --no-browser - Copia la URL proporcionada (incluyendo el token) y pégala en tu navegador de Windows 11.
Otras Opciones (Menos Recomendadas)
- Usar
--break-system-packages: Podrías forzar la instalación global conpip3 install jupyter --break-system-packages24. Sin embargo, esto no es recomendable ya que puede causar problemas con los paquetes gestionados por el sistema operativo y potencialmente romper tu instalación de Python o WSL 15. - Instalar con
apt: Podrías intentarsudo apt install python3-notebook(el nombre del paquete puede variar). Esto instalaría la versión de Jupyter de los repositorios de tu distribución, que podría no ser la más reciente o la que necesitas. Generalmente, para desarrollo Python, se prefierepipdentro de un entorno virtual para tener más control sobre las versiones de los paquetes.
Error de dependencias
El error en la instalación de dependencias, específicamente con nilm-metadata @ file:///home/user/nilm_metadata, se debe a que pip está intentando encontrar el paquete nilm-metadata en la ruta del sistema de archivos WSL (/home/user/nilm_metadata), pero esa ruta no es válida desde la perspectiva de Windows (donde la ruta correcta sería C:\Users\user\mi_proyecto_nilmtk).
Para solucionar esto, tienes que modificar la referencia a nilm-metadata en tu archivo requirements.txt para que pip pueda encontrar el paquete correctamente. Hay dos opciones principales:
Opción 1: Modificar requirements.txt para usar la ruta WSL correcta (recomendado)
- Edita
requirements.txtdentro de WSL. Abre el archivorequirements.txtcon un editor de texto (comonanoovim) dentro de tu entorno WSL. - Encuentra la línea que menciona
nilm-metadata. Debería ser algo como:textnilm-metadata @ file:///home/carlos/nilm_metadata - Cambia la ruta a la ruta WSL correcta. Si tu directorio de proyecto
mi_proyecto_nilmtkestá directamente dentro de tu directorio de inicio en WSL, la ruta podría ser correcta. Sin embargo, si has movido la carpetanilm_metadataa otro lugar dentro de WSL, asegúrate de que la ruta refleje la ubicación correcta dentro del sistema de archivos de WSL.Por ejemplo, si la estructura de directorios en WSL es:text/home/carlos/mi_proyecto_nilmtk/nilm_metadataEntonces la línea enrequirements.txtdebería ser:textnilm-metadata @ file:///home/carlos/mi_proyecto_nilmtk/nilm_metadata - Guarda los cambios en
requirements.txt. - Reintenta la instalación:bash
pip install -r requirements.txt
Opción 2: Eliminar la referencia y usar pip install -e . en la carpeta nilm_metadata
Esta opción es útil si planeas desarrollar activamente nilm_metadata y quieres que los cambios se reflejen inmediatamente.
- Elimina la línea de
nilm-metadataderequirements.txt. - Instala
nilm_metadataen modo editable:bashcd nilm_metadata pip install -e . cd .. # Para volver al directorio principal de tu proyecto
Consideraciones Adicionales
- Entornos Virtuales: Asegúrate de que tu entorno virtual esté activado cuando realices estos cambios y reinstales las dependencias.
- Permisos: Los permisos de archivo dentro de WSL pueden ser a veces problemáticos, especialmente cuando se interactúa con archivos en el sistema de archivos de Windows. Si encuentras errores de permiso, verifica que tienes los permisos adecuados para leer y escribir en los directorios y archivos relevantes desde dentro de WSL. 3.
- Rutas absolutas vs. relativas: En general, es mejor usar rutas relativas dentro de
requirements.txtsi es posible, para que el archivo sea más portátil. Sin embargo, con instalaciones locales como esta, a veces las rutas absolutas son más directas. - WSL2 file system: WSL2 utiliza un sistema de archivos virtualizado. Asegúrate de que las rutas sean correctas dentro de este sistema.
Al seguir estos pasos y asegurarte de que las rutas en tu requirements.txt son correctas para el sistema de archivos WSL, deberías poder resolver el error y continuar con la instalación de NILMTK.
“Muy buen artículo. Me ayudó muchísimo el paso a paso para configurar Ubuntu en Windows 11 usando WSL.
Para quienes quieran complementar este tutorial, aquí comparto otro recurso útil: Guía avanzada de Ubuntu + WSL
¿Alguien que ya lo ha probado con distribuciones ligeras como Xubuntu tiene alguna recomendación extra? Saludos y gracias por compartir. 😊”
Me gustaMe gusta