![](/img/trans.png)
[英]Why virtualenv activate script code differs from one env to another?
[英]Is adding Flask env vars to the virtualenv's activate script OK?
我正在virtualenv中進行Flask項目。 每次啟動新終端時,都必須重新初始化以下Flask環境變量:
export FLASK_APP="server.py"
export FLASK_DEBUG="1"
我的目標是不必手動輸入。
我嘗試編寫一個設置它們的Python腳本,但無法使其正常工作。 我嘗試編寫設置它們的shell腳本,但是Flask會引發一個錯誤,提示我的Python路徑不正確。
最后,我嘗試將env vars添加到virtualenv的activate
腳本的底部。 有效! 設置環境變量,並且Flask按預期運行。
$ source venv/bin/activate
$ flask run
這樣修改activate
腳本可以嗎? 這只是出於發展目的。
是的,在virtualenv的activate
腳本中設置環境變量非常適合管理您的開發環境。 Flask的文檔中對此進行了描述。 它們僅在終端中激活了環境時才處於活動狀態,如果創建新的環境,則必須記住要添加它們,但這沒什么問題。
在Flask 1.0中,您可以改用dotenv文件 。 安裝python-dotenv:
pip install python-dotenv
添加一個.flaskenv
文件:
FLASK_APP=server
並且flask
命令將在運行命令時自動設置它們:
flask run
與使用venv相比,這樣做的好處是您可以提交此文件,以便將其應用於您處理代碼的任何地方。
修改venv/bin/activate
文件對您venv/bin/activate
,因為在虛擬環境中定義了環境變量。 使用python3 -m venv venv
時,新虛擬環境中不存在環境變量。 無需修改activate
文件,您可以制作一個shell腳本,該腳本:
venv/bin/activate
首先,我嘗試編寫一個設置它們的Python腳本,但是經過研究,我意識到這是不可能的(?)。
您可以使用os.environ
從內部執行相同操作,但是shell腳本更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.