[Python-Dev] Re: PEP 328 -- relative and multi-line import
Shane Holloway (IEEE)
shane.holloway at ieee.org
Mon Apr 5 13:19:48 EDT 2004
Aahz wrote:
> 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.
Actually, no I meant package's __init__.py -- so that::
from .. import bar as barA
from ...package import bar as barB
assert barA is barB
> 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.
I would intuit that one would import subpackage1 from package as::
from . import subpackage1
but that's not explicitly spelled out. Is this correct?
More information about the Python-Dev
mailing list