我设置了一个应用程序,尝试使用 .env 文件对其进行配置,使用 python-dotenv 加载它并使用 Config 类来获取变量。如果我设置 FLASK_APP,例如:export FLASK_APP=pg.py,并执行烧瓶运行,应用程序会运行,但未加载配置。我知道环境变量是从我的 .env 文件中加载的,经过大量修改后,我意识到该应用程序是在没有上下文的情况下创建的(我认为),但我不确定如何让它这样做。如果我将 app.run() 添加到 pg.py 的末尾,它会起作用,但我知道这不是我应该做的。我读过这个页面:http : //flask.pocoo.org/docs/0.12/cli/好几次,我不能完全按照它来获得我想要的东西。我尝试 export FLASK_CONFIG=development 作为我的最后一次尝试,看看它是否能正常工作,但它没有。所以我的问题是,我如何使用烧瓶运行,并让它正确运行我的应用程序,而不是运行“python pg.py”
编辑:我注意到一切正常,除了配置。不知道我错过了什么。我觉得,根据我读过的内容, FLASK_CONFIG=development 应该可以工作。这几乎就像是使用“app = Flask( name )”创建的应用程序,跳过配置加载,并转到蓝图注册。为什么?我知道我可以在运行之前导出我所有的敏感信息,并这样做,但现在我一直在试图找出问题,并且在我理解之前无法放手:/
编辑 2:实际上,上下文已正确创建并应用了配置。它只是不从环境中读取。DEBUG=True 不起作用,但其他配置起作用。也许应用程序实例是在环境加载 .env 中的变量之前创建的。我将把它留在这里,当我找到它时更新一个解决方案。
应用程序/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config
db = SQLAlchemy()
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
db.init_app(app)
from app.main import main as main_blueprint
app.register_blueprint(main_blueprint)
return app
Run Code Online (Sandbox Code Playgroud)
配置文件
import os
class Config:
SECRET_KEY = os.environ.get('SECRET_KEY') or 'environment not set' …Run Code Online (Sandbox Code Playgroud)