I am trying to understand few things with respect to design.
I see a number of the code where Lazy Import features is used.By Lazy Import, I mean a facility provided by certain recipes, packages and modules which support "LazyImport" style. Those implementation in general aim to import the module only when it is used and provide some extra hooks for different things. I know there the error condition is delayed over here, but I am trying to understand why Lazy Import is not a default strategy in Python. 
What could it's (other) drawbacks be which prevent it from making a general useful case. Or are there languages which use this as a default import mechanism strategy.
Sometimes modules do important things when they are first loaded, so it might break the program to delay import of the module. For example, if a module defines command-line flags that should be parsed when the program first starts, the module must be imported before parsing the arguments. Since Python was originally designed to do imports eagerly, it's not possible to change the default behavior now without breaking some existing programs. Also, as mentioned in some of the other answers, for long-running services it's often desirable to load everything up front before serving requests so that the first few requests are not slowed down waiting for modules to be imported.
Why Lazy Import is not default in Python?