Hacer que un paquete virtual esté disponible a través de sys.modules
Digamos que tengo un paquete "mylibrary".
Quiero hacer que "mylibrary.config" esté disponible para importar, ya sea como un módulo creado dinámicamente o como un módulo importado desde un lugar completamente diferente que básicamente se "montaría" dentro del espacio de nombres "mylibrary".
Es decir, hago:
import sys, types
sys.modules['mylibrary.config'] = types.ModuleType('config')
Dada esa configuración:
>>> import mylibrary.config # -> works
>>> from mylibrary import config
<type 'exceptions.ImportError'>: cannot import name config
Aún más extraño:
>>> import mylibrary.config as X
<type 'exceptions.ImportError'>: cannot import name config
Entonces parece que usando la importación directa funciona, las otras formas no lo hacen. ¿Es posible hacer que funcionen también?