从 Flask 中的 __init__ 导入
Importing from __init__ in Flask
我想从我的 __init__
文件中导入一个 class。但是我导入不成功。这是我的目录结构
/fitBody_app
/fitBody
/static
/templates
__init__.py
models.py
views.py
run.py
这些都是我的 __init__.py
文件的导入:
import os
from flask import Flask
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy
from wtforms import fields, widgets
from fitBody.views import my_app
from flask_bootstrap import Bootstrap
app = Flask(__name__)
db = SQLAlchemy(app)
这些都是我在 views.py
文件中导入的内容:
import bcrypt
from flask import flash, redirect, render_template, request, session, Blueprint, url_for
from fitBody.models import RegistrationForm
from fitBody.models import cursor, conn
from fitBody import db
my_app = Blueprint('fitBody', __name__)
<......>
当我尝试 运行 文件时,这是我的回溯:
Traceback (most recent call last):
File "/Users/kai/github-projects/fitBody_app/run.py", line 1, in <module>
from fitBody import app
File "/Users/kai/github-projects/fitBody_app/fitBody/__init__.py", line 9, in <module>
from fitBody.views import fitBody
File "/Users/kai/github-projects/fitBody_app/fitBody/views.py", line 8, in <module>
from fitBody import db
ImportError: cannot import name 'db'
我想既然我是从同一个文件夹中导入的,就可以像这样导入。
我该如何从 __init__.py
文件导入 db
对象?
它与从 __init__.py
文件导入没有任何关系。您的 views.py
正在从您的 __init__.py
文件导入,而 __init__.py
文件正在从您的 views.py
导入,这是一个导入周期。我不确定你的 models.py
是什么样子,但是你如何在 models.py
中初始化 db
并从 [=15= 导入 __init__.py
和 views.py
]
因为 views.py 使用 db
导入语句应该在数据库定义之后。或者为了更好的设计将蓝图移动到另一个文件,并将蓝图保留在该文件中:
#__init__.py
app = Flask(__name__)
db = SQLAlchemy(app)
from fitBody.views import my_app
我想从我的 __init__
文件中导入一个 class。但是我导入不成功。这是我的目录结构
/fitBody_app
/fitBody
/static
/templates
__init__.py
models.py
views.py
run.py
这些都是我的 __init__.py
文件的导入:
import os
from flask import Flask
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy
from wtforms import fields, widgets
from fitBody.views import my_app
from flask_bootstrap import Bootstrap
app = Flask(__name__)
db = SQLAlchemy(app)
这些都是我在 views.py
文件中导入的内容:
import bcrypt
from flask import flash, redirect, render_template, request, session, Blueprint, url_for
from fitBody.models import RegistrationForm
from fitBody.models import cursor, conn
from fitBody import db
my_app = Blueprint('fitBody', __name__)
<......>
当我尝试 运行 文件时,这是我的回溯:
Traceback (most recent call last):
File "/Users/kai/github-projects/fitBody_app/run.py", line 1, in <module>
from fitBody import app
File "/Users/kai/github-projects/fitBody_app/fitBody/__init__.py", line 9, in <module>
from fitBody.views import fitBody
File "/Users/kai/github-projects/fitBody_app/fitBody/views.py", line 8, in <module>
from fitBody import db
ImportError: cannot import name 'db'
我想既然我是从同一个文件夹中导入的,就可以像这样导入。
我该如何从 __init__.py
文件导入 db
对象?
它与从 __init__.py
文件导入没有任何关系。您的 views.py
正在从您的 __init__.py
文件导入,而 __init__.py
文件正在从您的 views.py
导入,这是一个导入周期。我不确定你的 models.py
是什么样子,但是你如何在 models.py
中初始化 db
并从 [=15= 导入 __init__.py
和 views.py
]
因为 views.py 使用 db
导入语句应该在数据库定义之后。或者为了更好的设计将蓝图移动到另一个文件,并将蓝图保留在该文件中:
#__init__.py
app = Flask(__name__)
db = SQLAlchemy(app)
from fitBody.views import my_app