【问题标题】:Is adding Flask env vars to the virtualenv's activate script OK?将 Flask env vars 添加到 virtualenv 的激活脚本中好吗?
【发布时间】:2018-09-09 18:17:58
【问题描述】:

我正在一个 virtualenv 中处理我的 Flask 项目。每次启动新终端时,我都要重新初始化这些 Flask 环境变量:

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

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

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

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

$ source venv/bin/activate
$ flask run

这样修改activate脚本可以吗?这仅用于开发目的。

【问题讨论】:

    标签: python flask environment-variables


    【解决方案1】:

    是的,在 virtualenv 的 activate 脚本中设置环境变量非常适合管理您的开发环境。 It's described in Flask's docs.它们只有在终端中激活了env时才有效,如果你创建一个新的env,你必须记得添加它们,但它没有任何问题。


    使用 Flask 1.0,您可以改为 use dotenv files。安装 python-dotenv:

    pip install python-dotenv
    

    添加.flaskenv 文件:

    FLASK_APP=server
    

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

    flask run
    

    与搞乱 venv 相比,这样做的好处是您可以提交此文件,因此它适用于您处理代码的任何地方。

    【讨论】:

      【解决方案2】:

      修改venv/bin/activate 文件对您有用,因为环境变量是在虚拟环境中定义的。当您使用python3 -m venv venv 时,新虚拟环境中不存在环境变量。除了修改 activate 文件,您还可以创建一个 shell 脚本:

      1. 运行venv/bin/activate
      2. 定义环境变量
      3. 运行服务器

      首先,我尝试编写一个 Python 脚本来设置它们,但经过研究,我意识到这是不可能的(?)。

      您可以使用 os.environ 从内部执行相同的操作,但使用 shell 脚本更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        • 2018-08-02
        • 2011-10-20
        • 1970-01-01
        相关资源
        最近更新 更多