簡體   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