Python里取配置文件的时候,之前是使用的ini文件和python里configparser 模块:

可参考:https://www.cnblogs.com/feeland/p/4514771.html

后来觉得不够好用,在多个环境的情况下使用起来比较麻烦,就想有没有一种像spring boot里的profile机制呢~

因为项目里用到的Flask作为web框架所以就查了下找到了下面这篇博文:

https://wxnacy.com/2017/08/15/python-2017-08-15-flask-env-config/

根据实际需求和另一篇资料(后面有给出链接)稍微改了下(博主的所有配置放在一个文件里,用不同的类指示不同的环境。我这为了方便和后续配置项增加,把所有的配置文件拆开了),然后就有了下面的代码:

1.bash脚本,用于在跑python项目前设置环境,来设置接下来出现在config文件里的env_flask_config_name值:

#!/usr/bin/bash

ENV=$

if [ ! ${ENV} ]
then
ENV=local
fi export FLASK_CONFIG=${ENV}

2.config.py,用于设定具体的环境,重点在环境的映射字典:

# -*- coding: utf-8 -*
"""多环境配置类 author: Jill usage:
from application.config import app
database_uri = app.config['SQLALCHEMY_DATABASE_URI']
"""
from flask import Flask
from werkzeug.contrib.fixers import ProxyFix
import os """
配置文件映射
"""
CONFIG_NAME_MAPPER = {
'local': 'local_config.py',
'dev': 'dev_config.py',
'prod': 'prod_config.py',
'test': 'test_config.py'
} def create_app(flask_config_name=None):
"""
创建配置
"""
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
env_flask_config_name = os.getenv('FLASK_CONFIG')
# 指定环境
config_mapper_name = flask_config_name or env_flask_config_name or 'local'
config_name = CONFIG_NAME_MAPPER[config_mapper_name]
app.config.from_pyfile(config_name) return app application = create_app() if __name__ == '__main__':
print("local数据库连接:", application.config['SQLALCHEMY_DATABASE_URI'])

3.接下来就是具体的配置文件了(以dev_config.py为例子)(参考:http://www.pythondoc.com/exploreflask/configuration.html):

DEBUG = True # Turns on debugging features in Flask
BCRYPT_LEVEL = 12 # Configuration for the Flask-Bcrypt extension
MAIL_FROM_EMAIL = "robert@example.com" # For use in application emails

Python Flask 多环境配置的更多相关文章

  1. windows下跑python flask,环境配置

    首先声明一下,我安装的是python 2.7. 第一步:下载easy_setup.py 下载地址:https://pypi.python.org/pypi/setuptools 这个下载地址真心难找, ...

  2. python+selenium的环境配置

    以前写过关于python和selenium加myeclipse的环境配置,但是myeclipse启动时过于费时,虽然myeclipse有很好的提示功能,但是作为初学者,我还是直接用python的idl ...

  3. Python selenium chrome 环境配置

    Python selenium chrome 环境配置 一.参考文章: 1. 记录一下python easy_install和pip安装地址和方法 http://heipark.iteye.com/b ...

  4. 【selenium+python】之Python Flask 开发环境搭建(Windows)

    一.先安装python以及pip 二.其次, Python的虚拟环境安装: 在github上下载https://github.com/pypa/virtualenv/tree/master  zip文 ...

  5. Python flask中的配置

    当你开始学习Flask时,配置看上去是小菜一碟.你仅仅需要在config.py定义几个变量,然后万事大吉. 然而当你不得不管理一个生产上的应用的配置时,这一切将变得棘手万分. 你不得不设法保护API密 ...

  6. Python 爬虫2——环境配置

    关于环境配置的操作,其实非常简单,假如不使用第三方的框架的话,只需要安装Python即可完成后续的操作. 一.Python的安装和配置: windows系统的安装配置过程如下,假如是Mac系统,可参考 ...

  7. Python沙盒环境配置

    一.简介 本文介绍配置python沙盒环境的方法步骤. 二.安装步骤 1.安装pyenv http://www.cnblogs.com/274914765qq/p/4948530.html 2.安装v ...

  8. 代码编辑器[0] -> Vim/gVim[0] -> 基于 Python 的 gVim 环境配置(Windows)

     环境配置 / Environment Setup 基于Python开发的 gVim 环境配置(Windows) 使用方式参考 Vim 的使用. 1 基于vundle进行配置 Vim有多个扩展管理器, ...

  9. 免安装方式的Python之VSCode环境配置

    概述 本文旨在介绍免安装方式,在VSCode中搭建Python(3.73)的配置环境.至于Python是什么.它能做些什么,诸如此类的介绍均不在此文中介绍,相信能看此文的人,多多少少都会有些了解. V ...

随机推荐

  1. Word2007:如何在竖版(纵向)页面中间插入横版(横向)页面

        通常情况下,我们在word排版过程中使用一种页面版式(横版/竖版)即可.但在某些特殊情况下,我们可能会需要在竖版页面中间插入一页或多页横版页面,抑或在横版页面中间插入竖版页面.那么,如何针对这 ...

  2. CF1096. G. Lucky Tickets(快速幂NTT)

    All bus tickets in Berland have their numbers. A number consists of n digits (n is even). Only k dec ...

  3. js三级联动

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  4. java语法基础练习

    1.阅读示例: EnumTest.java,并运行.分析结果 代码: public class EnumTest { public static void main(String[] args) { ...

  5. Battle City 优先队列+bfs

    Many of us had played the game "Battle city" in our childhood, and some people (like me) e ...

  6. hdu1255 覆盖的面积 线段树-扫描线

    矩形面积并 线段树-扫描线裸题 #include<stdio.h> #include<string.h> #include<algorithm> #include& ...

  7. Select2 用法

    http://www.cnblogs.com/wuhuacong/p/4761637.html 2.这个做详细参考 http://www.jianshu.com/p/c5ab74b91b2e 3.ht ...

  8. ZH奶酪:隐马尔可夫模型学习小记——forward算法+viterbi算法+forward-backward算法(Baum-welch算法)

    网上关于HMM的学习资料.博客有很多,基本都是左边摘抄一点,右边摘抄一点,这里一个图,那里一个图,公式中有的变量说不清道不明,学起来很费劲. 经过浏览几篇博文(其实有的地方写的也比较乱),在7张4开的 ...

  9. 通过torodb && hasura graphql 让mongodb 快速支持graphql api

    torodb 可以方便的将mongo 数据实时同步到pg,hasura graphql 可以方便的将pg 数据暴露为graphql api,集成在一起真的很方便 环境准备 docker-compose ...

  10. java 的关键字 native

    native native 关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中.Java语言本身不能对操作系统底层进行访问和操作,但是可 ...