Почему мои переменные среды не загружаются в мое приложение фляги? - PullRequest
0 голосов
/ 05 ноября 2018

не был уверен, стоит ли публиковать здесь в 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 init

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Если бы ваша переменная была действительно определена, вы бы увидели ее в os.environ. Один из возможных способов вручную воспроизвести ситуацию, в которой вы находитесь, - определить переменную в одном терминале и запустить virtualenv в python из другого. Я бы посоветовал перейти к тому моменту, с которого вы запускаете приложение фляги, и дважды проверить переменные среды.

0 голосов
/ 05 ноября 2018

В вашей конфигурации виртуального хоста 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...