运行Flask应用程序和设置环境的不同方法

时间:2019-06-15 18:55:14

标签: python flask

我有以下应用,当我使用它运行时

flask run 

似乎可以正确执行,但是当我执行python app.py时,出现以下错误:

➣ $ python app.py 
Traceback (most recent call last):
  File "app.py", line 14, in <module>
    app.secret_key = os.environ['SECRET_KEY']
  File "/Users/pkaramol/Workspace/second_flask/venv/bin/../lib/python3.7/os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'SECRET_KEY'

#!/usr/bin/env python
import os

from flask import Flask
from flask_jwt import JWT, jwt_required
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy

import settings
from resources.item import Item, ItemList

app = Flask(__name__)
api = Api(app)
app.config.from_pyfile('settings.py')
app.secret_key = os.environ['SECRET_KEY']
db = SQLAlchemy(app)



if __name__ == "__main__":
    print("Starting flask app...")
    print(os.end['SECRET_KEY'])
    db.create_all()
    api.add_resource(Item, '/item/<string:name>')
    api.add_resource(ItemList, '/items')

运行flask应用程序的两种方式有什么区别?为什么在第二种情况下无法正确呈现环境?

我正在使用python-dotenv.env文件中注入环境变量 顺便说一句,在第一种情况下,应用程序启动没有错误,我看不到用于调试的print语句。

如果在flask run的情况下未调用if __name__ == '__main__'下面的代码,我该如何通过调用db.create_all()来初始化数据库?

1 个答案:

答案 0 :(得分:0)

用任意字符串替换app.secret_key赋值。