首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从较低的模块导入时的ImportError

从较低的模块导入时的ImportError
EN

Stack Overflow用户
提问于 2013-04-14 00:14:40
回答 3查看 6K关注 0票数 2

我正在尝试在我的Flask项目的一个模块中导入一个名为db (SQLAlchemy对象)的对象,以便在我的模型中使用SQLAlchemy (models.py)。假设我的包被命名为Foo,并且在他的__init__.py文件中包含db对象,当我尝试执行from Foo import db时,我得到以下错误:

ImportError: cannot import name db

我使用Flask Blueprint将我的项目分派到两个应用程序(仪表板和前端)中,每个应用程序都包含一个__init__.py文件。只有models.py抛出了这个错误,我在视图文件中获得了一些导入(作为导入登录管理器),一切都进行得很顺利。

你知道这会是什么吗?

更新:回溯

代码语言:javascript
复制
Traceback (most recent call last):
    File "run.py", line 4, in <module>
        from kuchiyose import app
    File "/path_to_project/kuchiyose/kuchiyose/__init__.py", line 60, in <module>
        from kuchiyose import dashboard, frontend
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/__init__.py", line 10, in <module>
        from dashboard import views
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/__init__.py", line 10, in <module>
        from dashboard import views
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/views.py", line 8, in <module>
        from kuchiyose.dashboard.models import User
    File "/path_to_project/kuchiyose/kuchiyose/dashboard/models.py", line 3, in <module>
        from kuchiyose import db

ImportError: cannot import name db
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-14 03:49:33

首先,感谢你的帮助。关于我的第二个问题:“如何在没有循环导入问题的情况下将Flask模型导入到视图中(当使用SQLAlchemy时)”,我找到了一个解决方案。它不是将SQLAlchemy对象设置到应用程序__init__.py文件中,而是设置到models.py文件本身中。这样,您就可以毫无问题地将其导入到views.py文件中。

现在是我的models.py文件:

代码语言:javascript
复制
from kuchiyose import app
from flask.ext.sqlalchemy import SQLAlchemy

db = SQLAlchemy(app)

还有我的views.py

代码语言:javascript
复制
from kuchiyose.dashboard import models
票数 6
EN

Stack Overflow用户

发布于 2015-01-04 15:17:37

这是一个旧的,但在我的搜索中显示为最好的结果。

我有一个项目,它在几个不同的位置有模型声明,而不是一个合并的models.py文件,所以这个解决方案不是很理想。我发现在建立db对象后导入视图也很有效。

代码语言:javascript
复制
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

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

db = SQLAlchemy(app)

# Now Register routes
# db is now defined so app import db will now work)
from routes.user import user as user_routes
app.register_blueprint(user_routes)
票数 6
EN

Stack Overflow用户

发布于 2013-04-14 00:51:26

似乎存在循环导入:

kuchiyose.dashboard.views

  • kuchiyose/dashboard/views.py导入
  • kuchiyose/__init__.pykuchiyose.dashboard.models
  • kuchiyose/dashboard/models.py导入从kuchiyose

导入

有关更多信息,请参见例如Circular (or cyclic) imports in Python ...

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15989928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档