我有一个 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/