我使用的解决方案:
#__init__.py
app = Flask(__name__)
app.config.from_object('settings')
app.config.from_envvar('MYCOOLAPP_CONfig',silent=True)
在加载应用程序的同一级别上:
#settings.py
SERVER_NAME="dev.app.com"
DEBUG=True
SECRET_KEY='xxxxxxxxxx'
#settings_production.py
SERVER_NAME="app.com"
DEBUG=False
所以。如果环境变量MYCOOLAPP_CONfig不存在->仅加载settings.py,这是指默认设置(对我来说 是开发服务器)这是“ silent = True”的原因,不需要第二个配置文件,而settings.py默认用于开发,并具有公共配置键的默认值
如果除第一个设置之外还将加载其他settings_file,它将覆盖原始设置中的值。(在我的示例中,DEBUG和SERVER_NAME将被覆盖,而SECRET_KEY对于所有服务器均保持不变)
您应该自己发现的唯一内容取决于启动应用程序的方式。 在启动ENVVAR之前,应设置MYCOOLAPP_CONfig的设置 例如,我使用超级用户守护程序运行,并在生产服务器上将其放入超级用户配置文件中:
environment=MYCOOLAPP_CONfig="/home/tigra/mycoolapp/settings_production.py"
通过这种方法,您可以轻松管理所有配置文件,并且可以从git或任何其他版本控制实用程序中排除此文件
启动之前,控制台中的默认Linux方式是:export MYCOOLAPP_CONfig="/home/tigra/mycoolapp/settings_production.py"