python - 如何不使用 __init__.py 作为 Flask 应用程序名称?

标签 python flask

我有一个 flask 应用程序,结构如下:

  • repo_root
    • config.py
    • 需求.txt
    • my_cool_app/
    • my_cool_app/__init__.py
    • my_cool_app/models.py
    • my_cool_app/views.py
    • my_cool_app/静态/
    • my_cool_app/模板/

my_cool_app/__init__.py 的内容如下所示:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_oauth2_login import GoogleLogin
from flask_login import LoginManager

app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
migrate = Migrate(app, db)

google_login = GoogleLogin(app)
login_manager = LoginManager()
login_manager.init_app(app)

import my_cool_app.models
import my_cool_app.views

为了运行它,我调用:

FLASK_APP=my_cool_app/__init__.py flask run

根据各种在线文档,我认为我应该能够将 FLASK_APP 设置为包名称 my_cool_app。当我执行此操作并调用 Flask run 时,应用程序启动,但在浏览器中我立即看到错误:

flask.cli.NoAppException
flask.cli.NoAppException: The file/path provided (my_cool_app) does not appear to exist.  Please verify the path is correct.  If app is not on PYTHONPATH, ensure the extension is .py

我应该做什么才能将 FLASK_APP 设置为 my_cool_app?或者考虑到此 Flask 应用程序的结构方式,将 FLASK_APP 设置为其他内容是否更合适/典型?

最佳答案

基于围绕 this issue 的讨论,看来确实可以设置 FLASK_APP=my_cool_app 并使用 python -mflask run 成功运行。尚不确定这如何影响生产配置。

关于python - 如何不使用 __init__.py 作为 Flask 应用程序名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44350710/

相关文章:

python - 在flask socket.io中获取客户端的套接字ID

python - Django 单元测试客户端登录 : fails in test suite, 但不在 Shell 中

python - 指定 eventlet wsgi 服务器的进程数

python - 服务器发送事件 (SSE) 在 IIS 下似乎无法实时工作(我使用的是 Python 和 Flask)

python - 在 python 3 中将字节转换为字符串

python - 如何使用 Flask 和 SQLAlchemy 输出扁平化数据库表以实现出色表现

python - 如何使用 conda 使用 Flask 设置虚拟环境?

python - numpy 数组的追加与调整大小

python - 用于用户响应的 TkMessageBox

python - numpy array 和 python list 是否优化为动态增长?