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. 如何从github上clone项目源码-linux

    前言 github是目前较为流行的代码托管网站,linux系统是目前开发人员较为常用的操作系统.项目实现的过程中用到一些经典好用的源代码,可以从github上clone,本文主要介绍linux系统命令 ...

  2. 【BZOJ3110】【Zjoi2013】K大数查询 - 2

    之前用权值线段树套区间线段树水过,现在再练习一下整体二分 原题:有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b ...

  3. python 编码类型

    碰到各种编码混用, 则需要搞清楚. http://blog.csdn.net/lxdcyh/article/details/4018054. https://www.jianshu.com/p/a5b ...

  4. c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010512579/article/details/24011761 在封装通用 SQLSERVER ...

  5. task optimization之superglue分析

    开启logging (例子F:\wamp\www\git_repos\GitHub\GeneralUtility\superglue-master\examples\src\logging.cpp) ...

  6. PIG之 Hadoop 2.7.4 + pig-0.17.0 安装

    首先: 参考 http://blog.csdn.net/zhang123456456/article/details/77621487 搭建好hadoop集群. 然后,在master节点安装pig. ...

  7. mysql之 远程连接 mysql 很慢,本地连接 mysql 很快 (skip-name-resolve)

    症状:,远程连接 mysql 很慢,但是 本地连接 mysql 很快, ping 和 route 网络通信都是正常的. 解决:mysql 的配置文件中增加如下配置参数:[mysqld]skip-nam ...

  8. Oracle ASM 详解

    ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成, 也可以 ...

  9. java 多线程之:yield() 方法

    yield()介绍 yield()的作用是让步.它能让当前线程由"运行状态"进入到"就绪状态",从而让其它具有相同优先级的等待线程获取执行权:但是,并不能保证在 ...

  10. 无人驾驶之激光雷达&摄像头(主要from 速腾CEO 邱纯鑫分享)

    无人驾驶之激光雷达&摄像头 (from 速腾CEO 邱纯鑫公开课分享) 根据听的一些讲座和看的书籍,个人感觉:目前现在的自动驾驶,根本问题还是在于感知(路况,周边物体,交通标识等等),控制的方 ...