将Flask env var添加到virtualenv的激活脚本中可以吗?


问题内容

我正在virtualenv中进行Flask项目。每次启动新终端时,都必须重新初始化以下Flask环境变量:

export FLASK_APP="server.py"
export FLASK_DEBUG="1"

我的目标是不必手动输入。

我尝试编写设置它们的Python脚本,但无法使其正常工作。我尝试编写设置它们的shell脚本,但是Flask会引发一个错误,提示我的Python路径不正确。

最后,我尝试将env vars添加到virtualenvactivate脚本的底部。有效!设置环境变量,并且Flask按预期运行。

$ source venv/bin/activate
$ flask run

这样修改activate脚本可以吗?这只是出于发展目的。


问题答案:

是的,在virtualenvactivate脚本中设置环境变量非常适合管理您的开发环境。Flask的文档中对此进行了描述。它们仅在终端中激活了环境时才处于活动状态,如果创建新的环境,则必须记住要添加它们,但这没什么问题。


在Flask
1.0中,您可以改用dotenv文件。安装python-dotenv:

pip install python-dotenv

添加.flaskenv文件:

FLASK_APP=server

并且该flask命令将在运行命令时自动设置它们:

flask run

与使用venv相比,这样做的好处是您可以提交此文件,以便将其应用于您在代码上工作的任何地方。