Circular (or cyclic) imports in Python

Xolve picture Xolve · Apr 13, 2009 · Viewed 183.5k times · Source

What will happen if two modules import each other?

To generalize the problem, what about the cyclic imports in Python?

Answer

pythoneer picture pythoneer · Apr 14, 2009

If you do import foo (inside bar.py) and import bar (inside foo.py), 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 bar.py) and from bar import xyz (inside foo.py). 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.