烧瓶看不到“乘客”(Dreamhost托管)中设置的环境变量

时间:2019-03-09 17:05:27

标签: python flask environment-variables passenger dreamhost

我正在部署我的第一个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')

进入实际的Web服务器。当我SSH到Web服务器时,环境变量设置正确(我对它们进行了三重检查)。在新的终端中,我检查了环境变量以确保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个内部服务器错误。

我遇到的一件麻烦事是实际上在.bashrc中设置了env var,而.bashrc将正确保存,并且在我关闭并重新按sshd后仍将保留导出x = y,在尝试执行以下操作时不会显示变量回显它们或在python中声明它们。有人告诉我在.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)"

因此,如果环境变量正确,并且插入文字字符串而不是os.environ.get('foo')时python应用程序可以工作,为什么我总是返回500内部服务器错误?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

答案

好的,所以我注意到当我尝试在flask中调用环境变量时,我会使用

os.environ.get()

所以我尝试了一下:

os.getenv()

而且有效...到底有什么区别?我看到两者几乎可以互换使用!

相关问题