ImportError:无法导入名称(隐藏循环导入?)

时间:2015-03-29 08:58:49

标签: python sqlalchemy flask-sqlalchemy

app/__init__.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

from views import IndexView


app = Flask(__name__)
app.config.from_object('app.config')

db = SQLAlchemy(app)

# routing
app.add_url_rule('/', view_func=IndexView.as_view('show_posts'))

if __name__ == '__main__':
    app.debug = True
    app.run()

app/models.py

import datetime

from app import db


class Article(db.Model):
    # some fields


class Author(db.Model):
    # some more fields

app/seed.py

from app.models import Author, Article
from app import db


author1 = Author('guy 1')
author2 = Author('guy 2')
article1 = Article(authors=[author1, author2], contents='dsafda')
article1 = Article(authors=[author1], contents='vcxzcvz')

db.session.add(author1)
db.session.add(author2)
db.session.add(article1)
db.session.add(article1)
db.session.commit()

我正在尝试从python -m app.manage_scripts.seed以上的级别运行app,我收到了标题中提到的错误。我的代码中没有看到循环导入问题,但也许我只是忽略了什么?

编辑:

控制台输出为:

(_env) E:\code\python\flask_blog>python -m app.manage_scripts.seed E:\code\python\flask_blog\_env\Scripts\python.exe: cannot import name db

1 个答案:

答案 0 :(得分:0)

我通过在本地进行一些导入解决了这个问题。代码的工作版本(app/__init__.py):

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


def create_routes(app):
    from views import IndexView
    app.add_url_rule('/', view_func=IndexView.as_view('show_posts'))


app = Flask(__name__)
app.config.from_object('app.config')

db = SQLAlchemy(app)

if __name__ == '__main__':
    create_routes(app)

    app.debug = True
    app.run()