python
module_error
ai_generated
true
ImportError: cannot import name 'app' from partially initialized module 'myapp' (most likely due to a circular import)
ID: python/flask-import-error-circular
80%Fix Rate
85%Confidence
0Evidence
2024-03-15First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 3.x | active | — | — | — |
Root Cause
Circular imports between Flask application modules, often when views.py imports from app.py and app.py also imports from views.py at module level.
generic中文
Flask应用模块之间的循环导入,常见于views.py从app.py导入,同时app.py也在模块级别从views.py导入。
Workarounds
-
90% success Use lazy imports inside functions or request handlers
def create_app(): from myapp.views import some_view app.register_blueprint(some_view) return app -
85% success Refactor to use Flask application factory pattern
# app.py def create_app(): app = Flask(__name__) with app.app_context(): from . import views app.register_blueprint(views.bp) return app
Dead Ends
Common approaches that don't work:
-
Moving all imports to the top of each file without restructuring
95% fail
Doesn't break the cycle; Python still tries to initialize both modules simultaneously.
-
Using 'from myapp import app' inside a function without lazy loading
70% fail
If the function is called during module initialization, the cycle persists.