【发布时间】:2019-09-02 23:41:27
【问题描述】:
我正在尝试从我的 models.py 中导入一个类,但我认为我遇到了循环导入问题。我不确定如何解决这个问题。
我已尝试移动导入,并更改每个文件中的导入。
app.py:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# import psycopg2
import os
# Init app
app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
#SQLlite DATABASE
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///sleepTracker.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['DEBUG'] = True
# Init db
db = SQLAlchemy(app)
from models import SleepResult
@app.route('/')
def main():
return 'Hello World!'
if __name__ == '__main__':
app.run()
models.py:
from manage import db, app
class SleepResult(db.Model):
__tablename__ = 'sleep_result'
sleep_result_id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer)
sleep_result = db.Column(db.Integer)
def __init__(self,user_id, sleep_result):
self.user_id = user_id
self.sleep_result = sleep_result
def __repr__(self):
return '<SleepTracker {}>'.format(self.sleep_result)
manage.py:
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app, db
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
追溯:
Traceback (most recent call last):
File "app.py", line 19, in <module>
from models import SleepResult
File "/home/john/Documents/sleep_tracker/models.py", line 1, in <module>
from manage import db, app
File "/home/john/Documents/sleep_tracker/manage.py", line 4, in <module>
from app import app, db
File "/home/john/Documents/sleep_tracker/app.py", line 19, in <module>
from models import SleepResult
ImportError: cannot import name 'SleepResult'
【问题讨论】:
-
是的,IMO 这是一个循环导入,注释掉
app.py中的 L19 应该可以工作 -
@SuperShoot 我试过了,同样的错误。我正在遵循本指南,我认为我已经完全匹配了它,但没有骰子。 gist.github.com/mayukh18/2223bc8fc152631205abd7cbf1efdd41
-
是的,我已经完全按照呈现的方式复制了该代码,并且遇到了与您相同的问题。您应该查看官方文档,了解如何构建应用程序的一个很好的示例:flask.palletsprojects.com/en/1.1.x/tutorial/factory/…
标签: python flask flask-sqlalchemy