栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Flask中的“ ImportError:无法导入名称邮件”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask中的“ ImportError:无法导入名称邮件”

您具有循环依赖关系。您必须了解Python在导入文件时在做什么。

每当Python导入文件时,Python都会查看该文件是否之前已经开始导入。因此,如果模块A导入模块B,而模块B导入模块A,则Python将执行以下操作:

  • 开始运行模块A。
  • 当模块A尝试导入模块B时,请暂时停止运行模块A,然后开始运行模块B。
  • 然后,当模块B尝试导入模块A时,Python将不会继续运行模块A来完成;相反,模块B将只能从模块A导入在模块B开始运行之前已经在其中定义的属性。

这是

app/__init__.py
,这是第一个要导入的文件。

from flask import Flaskapp = Flask(__name__)from app import index # <-- See note below.from flask.ext.mail import Mailmail = Mail(app)

导入此文件时,只有Python运行脚本。创建的所有全局属性都将成为模块属性的一部分。因此,当您点击第三行时,已经定义了“ Flask”和“
app”属性。但是,当你到了第三行,Python中开始尝试导入

index
app
。因此,它开始运行
app/index.py
文件。

当然,这看起来如下所示:

from flask.ext.mail import Messagefrom app import app, mail # <-- Error herefrom flask import render_templatefrom config import ADMINSfrom decorators import async

请记住,当这条巨蟒文件正在导入,您迄今为止只定义了

Flask
app
app
模块。因此,尝试导入
mail
将不起作用。

因此,您需要重新排列代码,以便如果

app.index
依赖于中的属性
app
,则
app
在尝试导入之前定义该属性
app.index



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645500.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号