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ó:Looks like a bug to me - or perhaps someone who actually understands how import works could explain it?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.' =====================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
signature.asc
Description: OpenPGP digital signature
-- http://mail.python.org/mailman/listinfo/python-list