2016-04-28 116 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