前言
每一個軟件項目都需要在不同的環(huán)境下部署上陕,例如開發(fā)環(huán)境桂对、測試環(huán)境脆栋、線上環(huán)境等等倦卖,每個環(huán)境的配置文件內(nèi)容當(dāng)然是不一樣的,如何優(yōu)雅地根據(jù)環(huán)境部署項目又不需要修改配置文件是一件很重要的事情椿争。作為一個Java程序員怕膛,平常使用maven來根據(jù)環(huán)境打包,現(xiàn)在寫Python秦踪,很頭疼這個問題褐捻。
解決方案
通過自定義環(huán)境變量,不說廢話椅邓,直接上代碼柠逞。
我的Python項目整體結(jié)構(gòu):
- 環(huán)境有兩套:開發(fā)和線上。
dev/env.ini:
[db]
mysql.host=192.168.1.1
prod/env.ini:
[db]
mysql.host=192.168.0.1
- 讀取配置文件內(nèi)容景馁。
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')#讀取環(huán)境變量板壮,默認(rèn)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()
- 命令執(zhí)行:
mountain@king:~/workspace/testpy$ package=prod python main.py
192.168.0.1