Nested module import clutters package namespace?
Arnaud Delobelle
arnodel at googlemail.com
Thu Feb 28 19:58:44 EST 2008
On Feb 29, 12:16 am, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:
> En Thu, 28 Feb 2008 11:00:08 -0200, Dr. Rüdiger Kupper
> <ruediger.kup... at honda-ri.de> escribió:
>
>
>
> > I'd be grateful for help with a problem of package and module
> > namespaces. The behaviour I observe is unexpected (to me), and I
> > couldn't find the answer in the docs, the tutorial, or the mailing
> > list archive. So here we go:
>
> > I have a package named 'pack'. Apart from the '__init__.py' file the
> > directory contains two modules 'x.py' and 'y.py':
>
> > pack/
> > __init__.py
> > x.py
> > y.py
>
> > ==== __init__.py ====
> > print "pack: Here is pack."
> > print "pack: I now assign y='hello'."
> > y="hello"
> > print "pack: My y is now:", repr(y)
> > print "pack: I now 'import x' which in turn does 'import y as q'."
> > import x
> > print "pack: My y is now:", repr(y)
> > print "pack: Why?"
> > =====================
>
> > ==== x.py ===========
> > print ' x: Here is x.'
> > print " x: I now 'import y as q'."
> > import y as q
> > =====================
>
> > ==== y.py ===========
> > print ' y: Here is y.'
> > =====================
>
> Looks like a bug to me - or perhaps someone who actually understands how
> import works could explain it?
Say:
pack/
__init__.py
x.py
importing x in any manner will automatically load pack and put x in
pack's namespace. Try:
from pack import x as foo
sys.modules['pack'].x
This explain the behaviour observed by the OP. AFAIK it is not a
bug. The tutoria hints at this without going into too much detail.
--
Arnaud
More information about the Python-list
mailing list