Я хочу импортировать db
из __init__.py
в файл model.py
, но не могу импортировать, появляется сообщение об ошибке:
Traceback (most recent call last):
File "/home/rohit/Desktop/flask_app/run.py", line 1, in <module>
from bytewar import create_app
File "/home/rohit/Desktop/flask_app/bytewar/__init__.py", line 5, in <module>
from bytewar.user.views import user_blueprint
File "/home/rohit/Desktop/flask_app/bytewar/user/views.py", line 9, in <module>
from bytewar.model import Login_form, Login, Post, Contacts, Signup_form, Contacts
File "/home/rohit/Desktop/flask_app/bytewar/model.py", line 5, in <module>
from bytewar import db
ImportError: cannot import name 'db'
Дерево моего приложения:
___ run.py # <<------- ImportError in this file.
___ bytewar/
|__ __init__.py
|__ config.py
|__ model.py
|__ user/
| |__ __init__.py
| |__ views.py
| |__ static/
| | |__ img/
| | |__ ....
| |__ template/
| |__ index.html
| |__ about.html
|
|__ admin/
|__ __init__.py
|__ views.py
|__ template/
|__ index.html
|__ about.html
__ init__.py:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bootstrap import Bootstrap
from flask_login import LoginManager
from bytewar.user.views import user_blueprint
from bytewar.admin.views import admin_blueprint
db = SQLAlchemy()
def create_app():
app = Flask('bytewar')
app = Flask(__name__.split('.')[0])
app.config.from_pyfile('config.py')
app.config['DEBUG'] = True
app.register_blueprint(user_blueprint)
app.register_blueprint(admin_blueprint)
login_manager = LoginManager()
bootstrap = Bootstrap(app)
db.init_app(app)
login_manager.init_app(app)
login_manager.session_protection = 'strong'
return app
Здесь вы можете видеть, что у меня db.init_app(app)
, но все же я получаю ImportError
.
После добавления файла __init__.py
внутри bytewar.user/
и bytewar.admin/
(рядом с views.py
) я получаю ошибку в run.py
:
Traceback (most recent call last):
File "/home/rohit/Desktop/flask_app/run.py", line 1, in <module>
from bytewar import app
File "/home/rohit/Desktop/flask_app/bytewar/__init__.py", line 5, in <module>
from bytewar.user.views import user_blueprint
File "/home/rohit/Desktop/flask_app/bytewar/user/views.py", line 9, in <module>
from bytewar.model import Login_form, Login, Post, Contacts, Signup_form, Contacts
File "/home/rohit/Desktop/flask_app/bytewar/model.py", line 5, in <module>
from run import db
File "/home/rohit/Desktop/flask_app/run.py", line 1, in <module>
from bytewar import app
ImportError: cannot import name 'app'
run.py:
from bytewar import app
if __name__ == "__main__":
app.run()
Мой bytewar/user/__init__.py
и как он есть bytewar/admin/__int__.py
:
from flask import Blueprint
user_blueprint = Blueprint(
'user', __name__,
static_folder='static',
template_folder='template',
)
Почему это происходит?