I'm no expert, but your post made me curious. It appears that __all__ has the effect of ensuring that
from test import * picks up test1, but doesn't go any further than that. from test.test1.test2 import * should cause test3 to be imported. max -- http://mail.python.org/mailman/listinfo/python-list