Circular (or cyclic) imports in Python

If you do import foo (inside and import bar (inside, it will work fine. By the time anything actually runs, both modules will be fully loaded and will have references to each other.

The problem is when instead you do from foo import abc (inside and from bar import xyz (inside Because now each module requires the other module to already be imported (so that the name we are importing exists) before it can be imported.

Leave a Comment