2016-04-28 121 views
4

在过去的几年中,我主要使用django。 Django使用环境变量DJANGO_SETTINGS_MODULE来查找其配置。如何配置python环境

现在我有一个项目,我不使用django,我希望有一个干净,易于理解的方式来加载配置。

例子:

我希望有一个全球性的布尔打开调试或关闭:

settings.DEBUG 

我想有成千上万的方式来做到这一点。

但是,什么是最pythonic方式来存储和加载项目设置?

......也许Python社区已经以我不知道的熟知的默认方式解决了。

+1

@Matt此问题不应被关闭。要求pythonic方式做某事是这个网络上普遍接受的一种问题。 –

+1

同意,投票重新开放 –

+0

@theblizz“Pythonic”没有共同的定义,所以当人们要求“Pythonic”时,他们要求的答案与每个人对他们认为是“Pythonic”的意见一致。此外,这个问题也太广泛了。我已经看到了几十种加载配置的方式。不同的项目和需求需要不同的解决方案。这里的OP没有规定任何具体的约束条件(除了“Pythonic”,它根本不是约束条件)。 – Louis

回答

2

来源:https://docs.python.org/2/library/constants.html

使用全局不变常量

__debug__ 

这个常数Python是否没有与-O选项开始是真实的。

如果你的意思是设置日志记录级别,使用logging.setLevel(lvl)https://docs.python.org/2/library/logging.html#logging.Logger.setLevel

更新:

对于一般的全局常量我会用一个单独的,即一个模块,来存储你所需要的常量。即创建一个模块config.py

DEBUG = False 
OTHER_THING = True 

从其他模块可以

import config 
print(config.DEBUG) 
1

在我看来,最Python的方式是使用ConfigParser。它提供了可能需要的不同访问协议,以及不同的适配器(例如JSON)。

此外,它允许轻松定制,已完整记录,并且集成在其他设施中,如logging

使用ConfigParser作为文件配置的logging设施示例位于logging manual pages上。我通常为日志记录配置保留一个单独的文件,但可以使用单个文件来完成整个项目。

+0

它也是语言不可知的,所以配置管理员不需要Python的任何知识就可以使用它。 – solarissmoke

+0

请详细说明“它与日志记录等其他设施很好地集成”。 ConfigParser的文档不包含单词“logging”。 – guettli

+0

你说得对,反过来,'logging'使用'ConfigParser',所以文档是第一个。 – rll