我正在尝试部署我的烧瓶应用程序。通常我会有app.py
并将所有代码放入其中。
app.py
templates/
|
|--index.html
对于我真正的小项目。但后来我有一个稍大的应用程序,并按照the larger app guide by flask。 所以我有这个:
setup.py
app/
__init__.py
views.py
models.py
forms.py
templates/
| ---index.html
我现在在views.py
中的__init__.py
和中运行应用程序中的所有路线和视图:
from flask import Flask
app = Flask(__name__)
import app.views # Name in setup.py
if __name__ == "__main__":
app.run()
(这只是一个例子)
所以现在我按照指南运行pip install -e .
并运行:
>set FLASK_APP=app(name I set in setup.py)
flask run
它有效。除了我不知道如何用一个命令运行它。由于没有一个文件可以运行我不能使用gunicorn或类似的东西。我不知道如何执行这个应用程序。我如何在云服务器heroku上运行pip install .
?
我的问题是因为我必须从app
导入__init__.py
并使用import blog 导入视图。[insert import] (模型,视图等)感谢任何帮助。谢谢。
编辑:我不想使用蓝图。这可能太多了。我的应用程序是中等的,不小但不大
答案 0 :(得分:6)
您绝对可以使用Gunicorn运行该项目。 Gunicorn不仅限于单个文件,它还可以像flask run
一样导入Python模块。 Gunicorn只需要知道要导入的模块,即在该模块内调用的WSGI对象。
使用FLASK_APP
时,flask run
所做的只是查找module.app
,module.application
或Flask()
类的实例。它还支持create_app()
或make_app()
应用工厂,但是您没有使用这种工厂。
Gunicorn将不会搜索,如果仅给它一个模块,它将期望名称application
是可调用的WSGI。在您的情况下,您正在使用app
,因此您所要做的就是明确告诉它使用什么名称:
gunicorn app:app
:
之前的部分是要导入的模块(在您的情况下为app
),冒号之后的部分是可调用对象(在模块中也称为app
)。
如果您已将FLASK_APP
设置为Heroku config var,并想重新使用它,则可以在命令行上为gunicorn
引用它:
gunicorn $FLASK_APP:app
答案 1 :(得分:-1)
对于heroku,它可以处理requirement.txt
或setup.py
c.f。 https://devcenter.heroku.com/articles/python-pip#local-file-backed-distributions
如果您的Python应用程序包含setup.py文件,但不包含requirements.txt文件,则将使用python setup.py development安装软件包并解决依赖性。
如果您已经有一个需求文件,但想利用此功能,则可以将以下内容添加到需求文件中:
-e .
关于运行命令,我想你就像把Procfile放在了
web: FLASK_APP=app flask run
或
web: FLASK_APP=app python -m flask run