【发布时间】:2019-04-08 20:32:00
【问题描述】:
不确定是否在 linux 中发帖,但我遇到了一些麻烦。我有一个需要环境变量的烧瓶博客应用程序。我正在使用 os 模块访问它们,如下所示:
import os
app.config['SECRET_KEY'] = os.environ['SECRET_KEY']
但是,当我这样做时,我在“密钥”上得到一个 KeyError。我确信环境变量已经永久设置,我真的很困惑,我已经被这个问题困扰了好几天,真的需要一些帮助。抱歉,如果我描述的不够充分;如果您需要更多信息,请在 cmets 中询问。另外,有什么区别:
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']
谢谢
【问题讨论】:
-
你是如何设置这些环境变量的?
-
我使用了 export VARNAME=VARVALUE,然后在 .profile / .bashrc 中更改了一些内容。 (几周前我这样做了,所以我不记得具体细节了)但是当我在重新启动腻子后执行 printenv 时,它们仍然存在,因此它们被永久设置。
-
您确定您已为运行应用程序的帐户编辑了 .profile/.bashrc 吗?
-
好的,你是如何启动你的服务器进程的?你是手动做的,还是有某种 systemd/supervisor 进程来启动它?
-
@BryanOakley 我只有 1 个用户,我很确定(对 linux/ubuntu 不好)它是 root/sudo
标签: python linux environment-variables