如何修复Flask Blueprint错误-未找到模块

时间:2020-11-08 07:55:59

标签: python flask

我看过帮助指南等,但是我似乎仍然无法使Flask Blueprints有效。

这是我的结构

root /
config.py
   |app/
        | __init__.py
        | user_auth/

              | __init__.py
              | app.py
              | routes.py

在app / init .py文件中,该文件如下

from flask import Flask
from config import Config


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

from .user_auth.routes import user_auth


app.register_blueprint(user_auth, url_prefix="")

来自user_auth init 。.py文件为

from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
login = LoginManager(app)
login.login_view = 'login'

app.config['SECRET_KEY'] = 'trial'

from user_auth import routes, models

这是user_auth / routes.py文件

from user_auth import app, db
from flask_login import login_required
from user_auth.forms import RegistrationForm, LoginForm
from flask import request, render_template, flash, redirect, url_for, Blueprint
from werkzeug.urls import url_parse
from flask_login import logout_user

from flask_login import current_user, login_user
from user_auth.models import User


from flask import Blueprint
user_auth = Blueprint('user_auth', __name__)

@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html', title='Welcome')


@app.route('/register', methods=["POST", "GET"])
def register():

... (Other paths)

我正在运行Windows,并使用了以下命令

set FLASK_APP=app

然后我使用

flask run

当我尝试运行时,它显示以下内容:

Error: While importing "app", an ImportError was raised:

Traceback (most recent call last):
  File "...\python38-32\lib\site-packages\flask\cli.py", line 240, in locate_app
    __import__(module_name)
  File "...\root\app\__init__.py", line 8, in <module>
    from .user_auth.routes import user_auth
  File "...\root\app\user_auth\__init__.py", line 16, in <module>
    from user_auth import routes, models
ModuleNotFoundError: No module named 'user_auth'

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

对于End If中所有您提到的文件,例如app/user_auth/init.py,您都可以通过以下方式访问该包:

  • 绝对导入:routes.py
  • 相对导入:from root.app.user_auth

然后,我建议不要使用超过1种想法的同一个名称,这里from ..user_auth既是程序包名称,又是您的蓝图的变量名称

更改方式

user_auth