我对如何以及在何处初始化Python 3中的应用程序配置感到非常困惑。如何以及何时在Python中初始化配置?
我的配置由应用程序特定的配置(db连接字符串,url端点等)和日志配置组成。
在我的应用程序执行其预期的功能之前,我想初始化应用程序和日志记录配置。
经过几次不同的尝试,我最终结束了类似下面的代码在我的主要输入模块。它具有将所有导入分组在文件顶部(https://www.python.org/dev/peps/pep-0008/#imports)的良好效果,但由于仅为副作用导入配置模块非常不直观,因此感觉不太正确。
import config.app_config # sets up the app config
import config.logging_config # sets up the logging config
...
if __name__ == "__main__":
...
config.app_config
看起来像如下:
_config = {
'DB_URL': None
}
_config['DB_URL'] = _get_db_url()
def db_url():
return _config['DB_URL']
def _get_db_url():
#somehow get the db url
和config.logging_config
样子:
if not os.path.isdir('.\logs'):
os.makedirs('.\logs')
if os.path.exists('logging_config.json'):
with open(path, 'rt') as f:
config = json.load(f)
logging.config.dictConfig(config)
else:
logging.basicConfig(level=log_level)
什么是建立应用程序配置在Python常见的方法是什么?铭记我将有多个应用程序的每个使用config.app_config
和config.logging_config
模块,但具有不同的连接字符串可能从文件
它是Django吗?只是想确保 –
不,不使用Django,但是我确实最终复制了它们的方法,因为它非常优雅(https://github.com/django/django/blob/master/django/conf/__init__.py)。只有我不喜欢的是使用环境变量。 – user783836