我一直在考虑如何在我的 Python 应用程序中自动设置配置。
我通常使用以下类型的方法:
'''config.py'''
class Config(object):
MAGIC_NUMBER = 44
DEBUG = True
class Development(Config):
LOG_LEVEL = 'DEBUG'
class Production(Config):
DEBUG = False
REPORT_EMAIL_TO = ["ceo@example.com", "chief_ass_kicker@example.com"]
通常,当我以不同的方式运行应用程序时,我可以执行以下操作:
from config import Development, Production
do_something():
if self.conf.DEBUG:
pass
def __init__(self, config='Development'):
if config == "production":
self.conf = Production
else:
self.conf = Development
我喜欢这样工作,因为这很有意义,但是我想知道我是否也可以以某种方式将其集成到我的 git 工作流程中。
我的许多应用程序都有单独的脚本或可以单独运行的模块,因此并不总是有一个单一的应用程序可以从某个根位置继承配置。
如果许多这些脚本和单独的模块可以检查当前签出的分支并基于此做出默认配置决策,例如,通过查找config.py
与当前名称共享相同名称的类,那将是很酷的签出分支。
这可能吗,实现它的最干净的方法是什么?
这是一个好/坏主意吗?