python - 导入错误 : cannot import name

标签 python flask

我有两个文件 app.pymod_login.py

app.py

from flask import Flask
from mod_login import mod_login

app = Flask(__name__)
app.config.update(
    USERNAME='admin',
    PASSWORD='default'
)

mod_login.py

# coding: utf8

from flask import Blueprint, render_template, redirect, session, url_for, request
from functools import wraps
from app import app

mod_login = Blueprint('mod_login', __name__, template_folder='templates')

而python返回这个错误:

Traceback (most recent call last):
  File "app.py", line 2, in <module>
    from mod_login import mod_login
  File "mod_login.py", line 5, in <module>
    from app import app
  File "app.py", line 2, in <module>
    from mod_login import mod_login
ImportError: cannot import name mod_login

如果我删除 from app import app,代码会起作用,但我如何才能访问 app.config

最佳答案

问题是你有一个循环导入: 在 app.py 中

from mod_login import mod_login

在 mod_login.py 中

from app import app

这在 Python 中是不允许的。见 Circular import dependency in Python了解更多信息。总之,解决办法是

  • 要么将所有内容收集到一个大文件中
  • 使用本地导入延迟其中一项导入

关于python - 导入错误 : cannot import name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845366/

相关文章:

python - Flask-Markdown/Flask-Misaka 过滤器将 Markdown 封装在 pre 标签中

python - 安全的 Python REST API

html - python Flask不继承模板

flask - 在没有 https 的情况下在本地测试flask-oauthlib

python - 将 mimetypes.guess_type 与 email.mime.base.MIMEBase 一起使用

python - 防止第二个进程监听 Python 中的同一个管道

python - Pandas :替换字符串中的子字符串

python - Pandas Drop Very First Duplicate 仅

python - ‘translate(self)’是如何工作的?

python - 如何在 Flask 的地址栏中添加图标?