subpackage import problem
Robert Kern
rkern at ucsd.edu
Sun Aug 21 03:36:43 EDT 2005
Eric Huss wrote:
> I'm having a problem with packages within packages. Here's an example:
>
> foo/
> foo/__init__.py: empty file
> foo/sub/__init__.py:
> from foo.sub.B import B
> foo/sub/A.py:
> class A:
> pass
> foo/sub/B.py
> import foo.sub.A
> class B(foo.sub.A):
> pass
>
> Trying to "import foo.sub" will result in this error:
>
>>>>import foo.sub
>
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "foo/sub/__init__.py", line 1, in ?
> from foo.sub.B import B
> File "foo/sub/B.py", line 3, in ?
> class B(foo.sub.A):
> AttributeError: 'module' object has no attribute 'sub'
I imagine it has something to do with the timing of imports. Python is
executing the contents of foo/sub/B.py while it's trying to create the
module object foo.sub. You can get around it, though.
Try this in foo/sub/B.py :
from foo.sub.A import A
class B(A):
pass
That works for me (Python 2.4.1, OS X).
--
Robert Kern
rkern at ucsd.edu
"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
More information about the Python-list
mailing list