[Python-Dev] Re: PEP 328 -- relative and multi-line import

Aahz aahz at pythoncraft.com
Mon Apr 5 12:03:09 EDT 2004


On Mon, Apr 05, 2004, Shane Holloway (IEEE) wrote:
>>Aahz:
>>>
>>>Good point.  Here's what I *think* the semantics are; as soon as I get
>>>agreement, I'll update the PEP.  Given a package layout::
>>>
>>>    package
>>>        subpackage1
>>>            moduleX
>>>            moduleY
>>>        subpackage2
>>>            moduleZ
>>>        moduleA
>>>
>>>Each leading "." refers to one level of parent.  Assuming that the
>>>current file is ``moduleX.py``, following are correct usages of the new
>>>syntax::
>>>
>>>    from .moduleY import spam
>>>    from ..subpackage1 import moduleY
>>>    from ..subpackage2.moduleZ import eggs
>>>    from ..moduleA import foo
>>>    from ...package import bar
> 
> What about names inside package __init__?
> 
>     from .. import bar
> 
> Is this also valid?

Do you mean subpackage1's __init__.py?  If so, yes.  For most purposes,
a package's __init__.py is treated as if it were a module with the name
of the package.

Hmmmm...  I think I see what you're getting at: how do you access
subpackage1 from package's __init__.py using relative imports?  Seems to
me that you'd have to do ::

    from .package import subpackage1

Normally, though, subpackages import from their parents, not the other
way around.
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

Why is this newsgroup different from all other newsgroups?



More information about the Python-Dev mailing list