Cyclic imports

James rent.lupin.road at gmail.com
Thu Jun 26 23:40:42 EDT 2008


Hi all,
I'm looking for some advice dealing with cyclic, cross-package
imports.

I've created the following demo file structure:
./a/__init__.py
./a/a.py
./b/__init__.py
./b/b.py
./main.py

a.py imports a class from b.py and vice versa, and main.py imports
them both.

However, because a.py has not been completely read by the time it gets
to the:
from b import b
line, the
from a import a
line in b.py fails with an import error (stack trace at the end).

I hope that's clear: basically, because of the cyclic import, I see
incomplete modules which can't be imported.

Can I have this module hierarchy in some other way?

Thanks,
James

Stack trace from example:
  File "main.py", line 1, in <module>
    from a import a
  File "/Users/james/tmp/python/a/a.py", line 1, in <module>
    from b import b
  File "/Users/james/tmp/python/b/b.py", line 1, in <module>
    from a import a
ImportError: cannot import name a



More information about the Python-list mailing list