question about importing a package

Terry Reedy tjreedy at
Thu Dec 6 21:44:10 CET 2012

On 12/6/2012 11:50 AM, Matt wrote:
> It works now. Steven and Alex, thanks for your help!
> I ended up leaving and and bar.p the way they were, and in putting:
> from foo import *
> from bar import *
> So my mistake was not importing the foo and bar modules into sub_one/
> I also see how the __all__ array helps me control what gets imported. I can leave it out of, and everything gets imported. So my three lessons are:
> 1) "from X import *" will look for an __all__ list in module X, or in if X is a package instead of a module, and import only what is in that list. Module names are different than function names in that list.
> 2) if __all__ is not defined, "from X import *' will import everything in X's namespace

... that does not have a leading underscore. This is why there are 
things like

import sys as _sys
from itertools import chain as _chain

in the stdlib when the module author does not define __all__.

> 3) acts like just another module, so you have to import the package contents that you want into it before you import the package into your code

Terry Jan Reedy

More information about the Python-list mailing list