ModuleNotFoundError: el Python que ejecuta tu código no encuentra ese módulo
Cuando “pip dice que está instalado” pero el import falla, el problema suele ser que pip y tu programa no están usando el mismo intérprete o entorno.
Primero identifica qué clase de módulo esperas
Biblioteca estándar
json, pathlib o collections vienen con Python. Si fallan, revisa el nombre o el intérprete.
Paquete externo
Debe estar instalado en el entorno que ejecuta el programa.
Módulo local
Un archivo o paquete de tu proyecto debe estar en una ubicación importable y con el nombre esperado.
Sigue la cadena intérprete → pip → paquete
python -c "import sys; print(sys.executable)" python -m pip --version python -m pip show nombre-paquete
python -m pip vincula explícitamente pip al intérprete llamado por python. Reduce el clásico problema de instalar con un pip global y ejecutar con otro Python.
Nombre de instalación y nombre de importación pueden diferir
El nombre usado en PyPI no está obligado a coincidir exactamente con el nombre que escribes en import. Consulta la documentación del paquete en lugar de adivinar.
Si usas un entorno virtual, comprueba que está activo de verdad
No te fíes solo del prompt. Imprime sys.executable y comprueba que apunta al directorio del entorno esperado. En IDEs y notebooks, selecciona también el intérprete/kernel correcto.
Referencia técnica: documentación oficial de excepciones de Python.