Problema con ModuleNotFoundError: No module named 'django_extensions' en Django
Al trabajar con Django y añadir django-extensions a INSTALLED_APPS, puede surgir el siguiente error al ejecutar el servidor, migraciones o pruebas:
ModuleNotFoundError: No module named 'django_extensions'
¿Cuál es la causa?
Este error generalmente significa que django-extensions no está instalado en el entorno de Python que está ejecutando tu proyecto Django.
Esto suele pasar cuando:
- Estás usando un entorno virtual y no está activado.
- Estás usando una configuración remota (como Docker o entornos virtuales en VS Code) y el entorno del sistema no coincide con el entorno de ejecución de Django.
- Estás ejecutando
pytestomanage.pyde forma directa sin usar el Python adecuado.
Soluciones posibles
1. Instalar usando python -m pip install
Esto asegura que instalas el paquete en el entorno de Python exacto que estás usando para correr Django.
python -m pip install django-extensions
Luego verifica que se haya instalado correctamente:
python -c "import django_extensions"
Si no hay errores, ¡estás listo!
Esta es la solución que me ha funcionado personalmente.
2. Usar python -m pytest en lugar de pytest
Cuando ejecutas pruebas, puede pasar que:
pytest # ❌ Falla con ModuleNotFoundError
python -m pytest # ✅ Funciona correctamente
Esto ocurre porque el comando pytest puede no estar vinculado al entorno virtual, mientras que python -m pytest sí lo está.
Recomendaciones
- Usa siempre
python -m pip,python -m pytestypython manage.pypara evitar conflictos de entornos. - Comprueba qué Python estás usando con:
which python
python -c "import sys; print(sys.executable)"
- Si trabajas con VS Code, asegúrate de que el entorno virtual esté seleccionado en la parte inferior izquierda o en la configuración del proyecto.