前言
每一个软件项目都需要在不同的环境下部署,例如开发环境、测试环境、线上环境等等,每个环境的配置文件内容当然是不一样的,如何优雅地根据环境部署项目又不需要修改配置文件是一件很重要的事情。作为一个Java程序员,平常使用maven来根据环境打包,现在写Python,很头疼这个问题。
解决方案
通过自定义环境变量,不说废话,直接上代码。
我的Python项目整体结构:
Paste_Image.png- 环境有两套:开发和线上。
dev/env.ini:
[db]
mysql.host=192.168.1.1
prod/env.ini:
[db]
mysql.host=192.168.0.1
- 读取配置文件内容。
app/util/conf:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on Feb 4, 2016
@author: mountain
'''
import ConfigParser
import os
parser = ConfigParser.ConfigParser()
package = os.environ.get('package', 'dev')#读取环境变量,默认dev
parser.read(os.path.join(os.path.dirname(__file__).split('/app')[0], 'conf/' + package + '/env.ini'))
def get_mysql_host():
return parser.get('db', 'mysql.host').strip()
- 程序入口:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on Feb 4, 2016
@author: mountain
'''
from app.util import conf#此时将加载配置
if __name__ == '__main__':
print conf.get_mysql_host()
- 命令执行:
mountain@king:~/workspace/testpy$ package=prod python main.py
192.168.0.1
网友评论