Frank Millman wrote: >> >> To avoid the tedious reference, follow this with >> read = sound.formats.wavread # choose the identifier you prefer >> > > @Terry and OKB > > I tried that, but it does not work. > > a.py > /b > __init__.py > c.py > d.py > > a.py - > from b import c > c.py - > import b.d > d.py - > import b.c > > If I run a.py, it returns with no error. > > c.py - > import b.d > d = b.d > d.py - > import b.c > c = b.c > > If I run a.py, I get > > Traceback (most recent call last): > File "F:\tests\a.py", line 1, in <module> > from b import c > File "F:\tests\b\c.py", line 1, in <module> > import b.d > File "F:\tests\b\d.py", line 2, in <module> > c = b.c > AttributeError: 'module' object has no attribute 'c' > > I get the same if I try 'import b.c as c'.
Interesting, you're right. Note that it will work in c.py but not in d.py Anyway, testing this just reinforced my distaste for circular imports. Just trying to think about how it ought to work with a importing c but then c and d importing each other makes my brain hurt. Refactoring the files so that common code is in a separate library imported by both is easier to understand, and has the nice side bonus that it works. -- --OKB (not okblacke) Brendan Barnwell "Do not follow where the path may lead. Go, instead, where there is no path, and leave a trail." --author unknown -- http://mail.python.org/mailman/listinfo/python-list