【flask】環境配置-python-dotenv的使用


【自動發現程序實例】

一般來說,在執行flask run命令運行程序前,我們需要提供程序實例所在模塊的位置 。

Flask會自動探測程序實例,自動探測存在下面這些規則:

  • 從當前目錄尋找app.py和wsgi.py模塊,並從中尋找名為app或application的程序實例
  • 從環境變量FLASK_APP對應的值尋找名為app或application的程序實例

 

如果你程序主模塊命名為app.py,flask run命令會自動在其中尋找程序實例。如果你的程序主模塊名是其他名稱,

比如hello.py,那么需要設置環境變量FLASK_APP,將包含程序實例的模塊名賦值給這個變量。

在linux 或 macOS系統使用export命令:

export FLASK_APP=hello

 【管理環境變量】

Flask的自動發現程序實例機制還有第三條規則:如果安裝了python-dotenv,那么在使用flask run或其它命令時

會使用它自動從.flaskenv文件和.env文件中加載環境變量。

當安裝了python-dotenv時,Flask在加載環境變量的優先級是:手動設置的環境變量>.env中設置的環境變>.flaskenv設置的環境變量。

 

除了FLASK_APP,我們還需要使用到其他環境變量。環境變量在新創建命令行窗口或重啟電腦后就清除了,每次都要重設

變量有些麻煩。而且如果你同時開發多個Flask程序,這個FLASK_APP就需要在不同的值之間切換。為了避免頻繁設置環境變量,

我們可以使用python-dotenv管理項目的環境變量,首先使用pipenv將它安裝到虛擬環境:

pipenv install python-dotenv

我們在項目根目錄下分別創建兩個文件:.env和.flaskenv。.flaskenv用來存儲和Flask相關的公開環境變量,比如FLASK_APP;

而.env用來存儲包含敏感信息的環境變量,比如配置Email服務器的賬戶名與密碼。

在.env和.flaskenv文件中,環境變量使用鍵值對的形式定義,每行一個,以#開頭的為注釋,如下所示:

SOME_VAR=1
#這是注釋
FOO="BAR"

【注意!】一定是要在運行flask項目的情況下.env 和.flaskenv中的環境變量才會被Flask加載

  【代碼示例】 

.flaskenv中的配置如下:

TEST_ENV=test python-dotenv

app.py

from flask import Flask app =Flask(__name__) import os a=os.getenv('TEST_ENV') print(a)

app.run()
從下面的結果可以看出:
如果不在.flaskenv中配置有關flask的環境變量,運行flask后,

即使.flaskenv中有其它變量如,TEST_ENV,也不能獲取到它的值

 
        

.flaskenv文件中增加環境變量FLASK_ENV='development'再次運行app.py

這次.flaskenv中的環境變量都被Flask加載到了,與Flask環境無關的變量TEST_ENV的值也能被獲取取了

TEST_ENV=test python-dotenv FLASK_ENV='development'

 

另:如果不使用python-dotenv來管理配置變量,其實也可以使用.ini這樣的配置文件來存儲配置信息。

用法:【python3】configparser讀取ini配置文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM