【问题标题】:Why won't my environment variables load into my flask app?为什么我的环境变量不会加载到我的烧瓶应用程序中?
【发布时间】:2019-04-08 20:32:00
【问题描述】:

不确定是否在 linux 中发帖,但我遇到了一些麻烦。我有一个需要环境变量的烧瓶博客应用程序。我正在使用 os 模块访问它们,如下所示:

import os
app.config['SECRET_KEY'] = os.environ['SECRET_KEY']

但是,当我这样做时,我在“密钥”上得到一个 KeyError。我确信环境变量已经永久设置,我真的很困惑,我已经被这个问题困扰了好几天,真的需要一些帮助。抱歉,如果我描述的不够充分;如果您需要更多信息,请在 cmets 中询问。另外,有什么区别:

os.environ['env var']

on.environ.get('env var')

这是apache配置

<VirtualHost *:80>
  ...
  SetEnv SECRET_KEY secret_as_heck
  ...
</VirtualHost>

这是python初始化

def create_app():    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = os.environ['SECRET_KEY']
    app.config['SQLALCHEMY_DATABASE_URI'] =os.environ['DB_URI']
    app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
    app.config['MAIL_PORT'] = 587
    app.config['MAIL_USE_TLS'] = True
    app.config['MAIL_USERNAME'] = os.environ['MAIL_USERNAME']
    app.config['MAIL_PASSWORD'] = os.environ['MAIL_PASSWORD']

谢谢

【问题讨论】:

  • 你是如何设置这些环境变量的?
  • 我使用了 export VARNAME=VARVALUE,然后在 .profile / .bashrc 中更改了一些内容。 (几周前我这样做了,所以我不记得具体细节了)但是当我在重新启动腻子后执行 printenv 时,它们仍然存在,因此它们被永久设置。
  • 您确定您已为运行应用程序的帐户编辑了 .profile/.bashrc 吗?
  • 好的,你是如何启动你的服务器进程的?你是手动做的,还是有某种 systemd/supervisor 进程来启动它?
  • @BryanOakley 我只有 1 个用户,我很确定(对 linux/ubuntu 不好)它是 root/sudo

标签: python linux environment-variables


【解决方案1】:

在您的 Apache 虚拟主机配置中添加这样的变量

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>

os.environ['env var']on.environ.get('env var') 之间的区别在于,如果找不到环境变量,.get(key) 将返回 None,而 os.environ['env var'] 引发 KeyError

【讨论】:

  • 这仍然是一个 KeyError。我还应该使用 os.environ 访问吗?
【解决方案2】:

如果确实定义了您的变量,您会在os.environ 中看到它。手动复制您所处情况的一种可能方法是在一个终端中定义变量并从另一个终端启动 python 的 virtualenv。我建议转到启动烧瓶应用程序的位置,并仔细检查环境变量。

【讨论】:

  • python 我启动 python repl 并导入 os 并打印 os.environ['var']) 我得到关键错误
  • @Throupy 你能复制定义变量的代码吗?
  • 我在原帖中添加了
  • 你如何启动烧瓶?
  • 我相信它是由apache2自动启动的。
猜你喜欢
  • 2016-03-09
  • 2021-05-03
  • 2018-11-08
  • 2015-04-04
  • 2020-05-05
  • 2011-11-12
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
相关资源
最近更新 更多