Arnaud Delobelle wrote:
On Feb 29, 12:16 am, "Gabriel Genellina" <[EMAIL PROTECTED]>
wrote:
En Thu, 28 Feb 2008 11:00:08 -0200, Dr. Rüdiger Kupper <[EMAIL PROTECTED]> 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.

Thanks Gabriel and Arnaud for your comments. Since I felt unable to decide if this is a bug or "known behaviour" I filed the issue in the bugtracker. It certainly is inconsistent with what the docs and tutorial tells the user (they all say that from the user's view, import statements behave like assignments), so it should at least be clearly documented.

Cheers,
Rüdiger

--
Dr. Rüdiger Kupper
Honda Research Institute Europe GmbH
Carl-Legien-Straße 30
D-63073 Offenbach/Main, Germany

Phone : +049 (0)69-890 11-725
Fax   : +049 (0)69-890 11-749
E-Mail: [EMAIL PROTECTED]
PGP ID: C2303358

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to