Колба не видит переменные среды, установленные в Passenger (хостинг Dreamhost) - PullRequest
0 голосов
/ 09 марта 2019

Я развернул свой первый проект Flask. У меня есть контактная форма на веб-сайте, которая работает, если я устанавливаю app.config в буквальную строку, например так:

app.config["MAIL_USERNAME"] = "xxxxxx@xxxxxxxxx.com"
app.config["MAIL_PASSWORD"] = "xxxxxxxxxxx"

так что я знаю, что реальный код Python работает правильно. моя проблема возникает, когда я пытаюсь установить их как переменные окружения, например:

import os
app.config["MAIL_USERNAME"] = os.environ.get('MAILUSER')
app.config["MAIL_PASSWORD"] = os.environ.get('MAILPASS')

Переход к реальному веб-серверу. когда я захожу в веб-сервер, переменные среды устанавливаются правильно (я их трижды проверил). в новом терминале я проверил, чтобы переменные окружения существовали как в python, так и в самой среде:

Last login: Fri Mar  8 17:26:58 2019 from xxxxxxxxxxxxx
[allitnil]$ echo $MAILUSER
(correct value)
[allitnil]$ echo $MAILPASS
(correct value)
[allitnil]$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> assert os.getenv('MAILUSER') == '(correct value)'
>>> assert os.getenv('MAILPASS') == '(correct value)'
>>> exit()
[allitnil]$

несмотря на это, когда я пытаюсь отправить электронное письмо из контактной формы на веб-сайте, я получаю внутреннюю ошибку 500.

Одна вещь, с которой у меня были проблемы, - это на самом деле установка переменных env в .bashrc, в то время как .bashrc сохранял бы должным образом, а экспорт x = y сохранялся бы после того, как я закрыл и повторно ввел ssd, переменные не показывались при попытке повторять их или утверждать их в питоне. Вместо этого мне сказали установить переменные в .bash_profile, что исправило эту проблему.

.bash_profile

# ~/.bash_profile: executed by bash(1) for login shells.

umask 002
PS1='[\h]$ '

export MAILUSER="(correct value)"
export MAILPASS="(correct value)"

Итак, если переменные среды верны, и приложение python работает, когда подключены литеральные строки вместо os.environ.get ('foo'), почему я продолжаю возвращать 500 внутренних ошибок сервера? Я ценю всю вашу помощь.

1 Ответ

0 голосов
/ 09 марта 2019

ОТВЕТ

Хорошо, я заметил, что когда я пытаюсь вызвать переменные окружения в фляге, я использую

os.environ.get()

поэтому я попробовал:

os.getenv()

и это сработало ... в чем же разница? Я видел, как оба использовались почти взаимозаменяемо!

...