基于django的灵感,我们可以首先将项目配置文件夹配置成下面这样:
conf/
__init__.py
base.py
settings_dev.py
settings_prod.py
然后我们需要在__init__.py
文件中根据当前所属环境来引用对应的settings文件:
import importlib
class Settings(object):
"""The implementation class of the settings."""
def __init__(self, mode=None):
if mode == 'prod':
settings_module = importlib.import_module('conf.settings_prod')
else:
settings_module = importlib.import_module('conf.settings_dev')
# 将settings文件里面的键值对注入到setting对象里面去
for setting in dir(settings_module):
if setting.isupper():
# 只将大写的属性也就是我们在文件中手动定义的属性注入进来。
setattr(self, setting, getattr(settings_module, setting))
settings = Settings()
这样的话,我们可以在程序的入口定义一个参数传入执行的环境,然后可以在程序中像这样初始化settings:
settings.__init__(args.mode)