My applogies if this is a silly question... but what makes something a package? and does that mean that what I am trying to do is not possible ?
:( On 23 Mar, 15:53, "Gabriel Genellina" <gagsl-...@yahoo.com.ar> wrote: > En Mon, 23 Mar 2009 12:22:21 -0300, CinnamonDonkey > <cinnamondon...@googlemail.com> escribió: > > > > >> >> \ App > >> >> | main.py > >> >> +--\subpack1 > >> >> | | __init__.py > >> >> | | module1.py > >> >> | > >> >> +--\subpack2 > >> >> | | __init__.py > >> >> | | module2.py > > >> >> Module1 needs to access functionality in Module2. > > >> >> #module1.py > >> >> from ..subpack2 import module2 > > >> >> Seems reasonable to me... but it just does not work and I was so > >> >> liking Python. :( > > Another name for relative imports is "intra-package imports". They work > *inside* a package, and you cannot go out of the package. > If App is not a package, then subpack1 and subpack2 are separate packages > and you cannot use relative imports between them. So module1 must refer to > module2 absolutely: > > from subpack2 import module2 > > > from ..subpack2 import module1 #ValueError: Attempted relative import > > beyond toplevel package > > See the exception message. > > > Max, thank you for the response... I tried adding "from __future__ > > import absolute_import" which made no difference. I still get exactly > > the same error messages. Perhaps I should have mentioned that I am > > using Python 2.5, which I understand alread supports relative imports > > out of the box. I'll keep this line in for now anyway though :-) > > That __future__ line is not to enable relative imports (since they have > incompatible syntax, don't require anything special) but to ensure Python > interprets "normal" imports (that is, without leading dots) always as > absolute. The default behavior in 2.5 is to try *both* ways before failing. > > -- > Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list