2016-01-22 81 views
2

截至目前,我們有一個文件conf.py,它存儲了我們服務的大部分配置變量。我們有類似這樣的代碼:編譯時的Python配置

environment = 'dev' # could be dev, local, staging, production 
configa = 'something' 
configb = 'something else' 

if environment = 'dev': 
    configa = 'something dev' 

elif environment = 'local': 
    configa = 'something local' 

這是正確的方式來管理python項目中的配置文件嗎?這些配置是否在編譯時加載到變量中(創建pyc文件時),還是在每次將配置文件導入python腳本時檢查if條件,還是每次訪問配置變量時都檢查?

回答

2

所有代碼都在導入時運行。但是由於在運行時不太可能一次又一次地導入應用程序,因此可以忽略(最小)開銷。

2

這是主觀的,但沒有在這個崗位了很好的討論: What's the best practice using a settings file in Python?

用你的方法,它將被對待的方式與任何其他的Python腳本,即進口相同。如果您希望在訪問時更新/或者不重新啓動服務,最好使用外部/非Python配置文件(例如json,.ini)並設置功能來刷新文件。

0

您必須創建一個文件,例如settings.py, 將模塊的路徑添加到系統所在的文件中。 例子:

sys.path.append(os.path.dirname(__file__)) 

Аfter任何地方,你可以導入的文件,並從任何設置,以獲得:

import settings 

env = settings.environment 

同樣,許多工作框架。