Python项目如何区分配置开发环境/生产环境settings

基于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)

你可能感兴趣的:(Python)