繁体   English   中英

为什么我的环境变量不会加载到我的 Flask 应用程序中?

[英]Why won't my environment variables load into my flask app?

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

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

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

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']

谢谢

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

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

os.environ['env var']on.environ.get('env var')在于.get(key)将在找不到环境变量时返回Noneos.environ['env var']引发KeyError

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM