Flask没有看到Passenger中设置的环境变量(Dreamhost宿主)

2024-10-03 17:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在部署我的第一个Flask项目。我在网站上有一个联系表格,如果我设置应用程序配置对于文本字符串,如下所示:

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到webserver时,环境变量设置正确(我已经对它们进行了三次检查)。在一个新的终端中,我检查了环境变量以确保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 vars,而.bashrc将正确保存,并且在我关闭并在中重新sshd之后,导出x=y将保留,在尝试在python中回显或断言变量时,变量将不会显示。我被告知改为在.bash\u profile中设置变量,这解决了这个问题。你知道吗

.bash\u配置文件

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

umask 002
PS1='[\h]$ '

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

因此,如果环境变量是正确的,并且python应用程序在插入文本字符串而不是操作系统环境获取('foo'),为什么我总是返回500个内部服务器错误?我感谢你的帮助。你知道吗


Tags: 文本服务器bashconfigapp应用程序valueos
1条回答
网友
1楼 · 发布于 2024-10-03 17:19:45

回答

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

os.environ.get()

所以我试了一下:

os.getenv()

而且成功了。。。到底有什么区别呢?我见过这两种用法几乎可以互换!你知道吗

相关问题 更多 >