Python根據(jù)環(huán)境部署項(xiàng)目

前言

每一個(gè)軟件項(xiàng)目都需要在不同的環(huán)境下部署,例如開發(fā)環(huán)境、測試環(huán)境、線上環(huán)境等等,每個(gè)環(huán)境的配置文件內(nèi)容當(dāng)然是不一樣的,如何優(yōu)雅地根據(jù)環(huán)境部署項(xiàng)目又不需要修改配置文件是一件很重要的事情。作為一個(gè)Java程序員,平常使用maven來根據(jù)環(huán)境打包,現(xiàn)在寫Python,很頭疼這個(gè)問題。

解決方案

通過自定義環(huán)境變量,不說廢話,直接上代碼。

我的Python項(xiàng)目整體結(jié)構(gòu):

Paste_Image.png
  1. 環(huán)境有兩套:開發(fā)和線上。

dev/env.ini:

[db]
mysql.host=192.168.1.1

prod/env.ini:

[db]
mysql.host=192.168.0.1
  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()
  1. 程序入口:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on Feb 4, 2016

@author: mountain
'''
from app.util import conf#此時(shí)將加載配置

if __name__ == '__main__':
     print conf.get_mysql_host()
  1. 命令執(zhí)行:
mountain@king:~/workspace/testpy$ package=prod python main.py
192.168.0.1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容