I think this is a good idea, but I'd implement it just a little differently. The convenience of scipy.* can be great for code that uses a lot of scipy, so you don't have to type
import scipy.this, scipy.that, scipy.that_else,...
Right this is the reason for the current behavior.
But I tend to agree with R. Kern that the black magic played by scipy's delayed importer tends to (at least it has in the past, though in fairness it's currently pretty much OK) cause problems.
I also think that even though scipy starts pretty fast these days, it would still be a good idea to keep its init time to a minimum, especially for software that is run many times with a fresh process (like unit tests, for example).
I'd suggest having in scipy's top level a single method import_all, so that one could write:
import scipy scipy.import_all()
and from then on use:
scipy.this.foo() + scipy.that.bar()
I like this approach quite a bit. That way coders could choose packages as desired. And interactive use could be made easy as well. What do you think Pearu? You're probably the best one suited to make it happen. -Travis