Thanks Pamphile.
I just wanted to chime in and note that the introduction of lazy loading has (IMO) been a huge usability improvement. I personally now use `import scipy as sp` in code that I write and libraries that I contribute to like networkx have also adopted this pattern. The main reason that NetworkX has adopted this pattern is to ensure consistency and explicitness in the code base. For example, in networkx we have references to at least 4 different `linalg` packages: `numpy.linalg`, `scipy.linalg`, `scipy.sparse.linalg` and `networkx.linalg`. We now always refer to these explicitly from the top-level package alias, i.e. `np.linalg`, `sp.linalg`, `sp.sparse.linalg` etc.
This is of course only one of many possible access patterns, but the introduction of lazy loading made this much more convenient!
~Ross