2013-03-20 61 views
3

通常情況下,它是從配置文件加載配置一個好主意。這是from_envvar()可以做,取代上述from_object()行:林在燒瓶教程蟒開始,我不明白這一段

app.config.from_envvar('FLASKR_SETTINGS', silent=True)

這樣,有人可以設置所謂FLASKR_SETTINGS指定要加載那麼這將覆蓋默認值的配置文件中的環境變量。如果沒有設置這樣的環境密鑰,無聲開關只是告訴Flask不要抱怨。

我不是太熟悉的環境變量。我想簡單地解釋一下上面的段落。我最好的猜測是,當程序讀取FLASKR_SETTING這是否意味着在我自己的計算機上,我已經建立了一個名爲環境變量的名稱映射到該文件的名稱?香港專業教育學院與我的環境路徑搞砸前,說實話,我還是不明白,所以我來到這裏尋找一個明確的答案

回答

3

環境變量是用於在計算機(Windows或Unix/LINUX等)上運行的特定過程中定義的名稱,值對。他們不是文件。您可以創建自己的環境變量併爲其指定任何名稱/值。例如,FLASKR_SETTING是可以將值設置爲配置文件的環境變量的名稱。在UNIX終端,例如,你可以這樣做:

export FLASKR_SETTING = /somepath/config.txt 

通過做好以上,您剛纔創建的環境變量命名FLASKR_SETTING其值設置爲/somepath/config.txt。您使用環境變量的原因是因爲您可以將它們綁定到某個流程並在流程啓動時按需使用。您不必擔心將它們保存在文件中。實際上,您可以在開始使用應用程序之前爲您的流程/應用程序創建啓動腳本,以便設置各種環境變量。

在燒瓶的情況下,app.config.from_envvar('FLASKR_SETTINGS',silent = True)將FLASKR_SETTINGS的值設置爲env中的值。變量。因此,它基本上轉化爲:

- Find the config file (/somepath/config.txt etc.) 
- lets say the contents of config file is: 
    SECRET_KEY="whatever" 
    DEBUG = True 
- Then using the 2 above, it will be translated to: 
    app.config['SECRET_KEY'] = "whatever" 
    app.config['DEBUG'] = True 

所以這種方式,您可以根據需要只更新配置文件,你會不會需要改變你的代碼。

+0

感謝,這和對方的回答幫了不少忙。我只剩下一點困惑。你說通過創建一個名爲FLASKR的環境變量,它會創建一個設置爲配置文本文件的「值」。這是什麼價值。我應該打開配置並放入數據庫配置,以便當我的程序執行app.config ['flaskr']時,它會轉到配置文本文件並查看我的設置並加載它們? – gallly 2013-03-21 16:25:03

+0

實際上我做了一個更正和一些編輯來解釋這個更好。看到我編輯的答案。環境變量只是指向具有像DEBUG = True等實際配置細節的配置文件。 – codegeek 2013-03-21 18:27:05

2

環境變量是將信息傳遞給程序的簡單,特別的方式。在unixy機,從命令外殼,它是那樣簡單

export FLASKR_SETTINGS=/path/to/settings.conf 
/path/to/program 

安裝程序在重啓啓動時,這是非常有用的;該配置可以很容易地包含在啓動系統程序的相同設置腳本中。