2016-07-30 68 views
0

我对如何以及在何处初始化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_configconfig.logging_config模块,但具有不同的连接字符串可能从文件

+0

它是Django吗?只是想确保 –

+0

不,不使用Django,但是我确实最终复制了它们的方法,因为它非常优雅(https://github.com/django/django/blob/master/django/conf/__init__.py)。只有我不喜欢的是使用环境变量。 – user783836

回答