不确定是否要在Linux中发布,但是我遇到了一些麻烦。我有一个需要环境变量的Flask博客应用程序。我正在使用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']
谢谢
答案 0 :(得分:0)
在您的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']
将引发{{1} }。
答案 1 :(得分:0)
如果确实定义了变量,那么您会在os.environ
中看到它。手动复制当前情况的一种可能方法是在一个终端中定义变量,然后从另一终端启动python的virtualenv。建议从启动烧瓶应用程序的位置开始,并仔细检查环境变量。