【问题标题】:ImportError: cannot import name (hidden circular import?)ImportError:无法导入名称(隐藏循环导入?)
【发布时间】:2015-06-02 08:29:10
【问题描述】:

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()

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

编辑:

控制台输出是:

(_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

【问题讨论】:

  • 请添加完整的错误回溯!
  • 没有比我在这个帖子主题中写的更多的追溯 :)
  • 数据库在您的 init.py 中,您确定还需要导入它吗?
  • 好的,我已经注释掉了seed.py 中的import db 语句,但是我仍然收到这个错误...

标签: python sqlalchemy flask-sqlalchemy


【解决方案1】:

我通过在本地进行一些导入解决了这个问题。代码的工作版本(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()

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2014-10-10
    • 2014-09-20
    • 2014-08-28
    相关资源
    最近更新 更多