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
[EMAIL PROTECTED]

"In the fields of hell where the grass grows high
 Are the graves of dreams allowed to die."
  -- Richard Harter

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to