I think the main reason that answers your question lays in that Python is an interpreted language. Your script does not run, it is read by the interpreter line by line subsequently (if a different, specific, pattern is not explicitly coded), and the interpreter executes the code you ask for.
For many reasons, one of which is performance, the interpreter cannot (or, better, is not designed to) inspect your whole script to search for patterns. This is completely different from what happens in compiled languages (e.g. C/C++), where the compiler spends much time looking at your code, building up an idea of what you want to do overall, and then (and only then) generates a byte code optimized to do the job you asked for (the optimisation parameters are up to you).
Coming back to Python, imagine when script A is importing script B, and at a certain line of script B, script A (that is still being imported... Recall? The interpreter proceeds line by line) is requested to be imported. It's easy to understand that I cannot proceed with the importing of script A since it relies on B and B is not yet fully imported.
When asking why something has been designed that way, please, do not thing to the most banal example, but to the most complex (or weirdest) one.
Some technics like TYPE_CHECKING can be used to avoid circular error while declaring types from a partially imported module. That's fine, since it's a specific, narrow case, where you're explicitly stating that you're not going to use any object from module A in module B before the former has been completely imported, but you just need to declare in advance their type being.
Hope I've been clear, though I'm aware my answer is not rigorous. Suggestion from those who are more expert than me in programming theory are warmly adviced.
priority 2fixes the problem. Probably you have a real example in mind. It's very easy to create an actual circular import example, I would recommend providing such an example and then explaining why adding this priority statement resolves things.priorityisn't critical to the problem, but this question nor any of its answers actually explore circular imports. You are solely investigating import statements, but you don't actually consider the consequences of importing from the two files. You don't import another module for no reason, you do so to import functions, and to import classes (and globals). Thisprioritystatement, or whatever keyword you choose, should address problems importing functions and classes that may or may not be dependent on one another.importstatements in a python module, you're ignoring the majority of the issues that could arise.