Diferentes resultados de importación en diferentes directorios.

Tengo un paquete MyPak y un módulo MyMod. Los archivos están organizados de la siguiente manera:

somedir / MyPak / MyMod.py

en MyMod.py solo hay una clase cuyo nombre también es MyMod

en el directorio somedir / MyPak , si hago la importación:

import MyMod 

Tengo MyMod importado como un módulo.

Pero en el directorio algún día , si lo hago.

 from MyPak import MyMod 

Tengo MyMod importado como una clase, no un módulo. ¿Por qué es este el caso?

Este comportamiento es indicativo de que tienes un archivo:

 somedir/MyPak/__init__.py 

donde haces lo siguiente:

 from MyMod import * 

Cuando import MyPak , importa desde ese __init__.py . Del mismo modo, cuando from MyPak import something , intentará extraer del espacio de nombres el paquete, que se verá dentro de __init__.py

Debido a que importó todo desde MyMod dentro de __init__.py , ahora la clase es local al paquete MyPak y enmascara el archivo MyMod.py .