[Python-Dev] Import semantics

Fabio Zadrozny fabiofz at gmail.com
Mon Jun 12 00:31:33 CEST 2006


Python and Jython import semantics differ on how sub-packages should be
accessed after importing some module:

Jython 2.1 on java1.5.0 (JIT: null)
Type "copyright", "credits" or "license" for more information.
>>> import xml
>>> xml.dom
<module xml.dom at 10340434>

Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import xml
>>> xml.dom
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: 'module' object has no attribute 'dom'
>>> from xml.dom import pulldom
>>> xml.dom
<module 'xml.dom' from 'C:\bin\Python24\lib\xml\dom\__init__.pyc'>

Note that in Jython importing a module makes all subpackages beneath it
available, whereas in python, only the tokens available in __init__.py are
accessible, but if you do load the module later even if not getting it
directly into the namespace, it gets accessible too -- this seems more like
something unexpected to me -- I would expect it to be available only if I
did some "import xml.dom" at some point.

My problem is that in Pydev, in static analysis, I would only get the tokens
available for actually imported modules, but that's not true for Jython, and
I'm not sure if the current behaviour in Python was expected.

So... which would be the right semantics for this?

Thanks,

Fabio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-dev/attachments/20060611/94b5b19c/attachment.html 


More information about the Python-Dev mailing list