为Ubuntu中的Heroku/python应用程序设置环境变量



我读了一些如何操作的文章,但仍在努力解决这个问题。在我的应用程序中,我以前只是从文件夹系统中的.py文件中提取密钥(这不是最佳做法(。相反,我想使用操作系统模块在我的开发环境中获取我的密钥(最终在heroku中也这样做(,类似于下面的代码:

import os    
OAUTH_TOKEN = os.getenv('OAUTH_TOKEN')

我已经读到,我需要将我实际的OAUTH_TOKEN添加到.profile文件中才能工作。

OAUTH_TOKEN = 'mysecretkey'

然而,当我运行上面的第一段代码并尝试打印OAUTH_TOKEN变量时,我没有得到任何回报。我还将我的密钥添加到.bashsrc文件以及其他一些网站中。

发生了什么事?为什么我不能用这种方式取回我的密钥?我错过了什么?

要在使用Python Flask应用程序时检索密钥,您需要安装python-dotenv。此包将帮助加载机密甚至运行时环境变量。

(venv)$ pip3 install python-dotenv

在您的密钥文件中,例如.env,初始化您的秘密环境变量:

# .env
OAUTH_TOKEN='<your-secret-oauth-token>'

要加载OAUTH_TOKEN,请使用dotenv:中的load-dotenv

# config.py
import os
from dotenv import load_dotenv
load_dotenv('.env')
class Config(object):
OAUTH_TOKEN = os.getenv('OAUTH_TOKEN') 
# or OAUTH_TOKEN = os.environ.get('OAUTH_TOKEN')

在您的终端中,尝试检索OAUTH_TOKEN的值,如下所示。我使用的是flask shell命令,而不是python3:

# start your python interpreter in the context of your application
(venv)$ flask shell
>>> from app import Config
>>> print(app.config['OAUTH_TOKEN']))
# Your token should be printed here

上面的假设是,在您的应用程序实例中,比如__init__.py文件,您已经导入了Config

# __init__.py
from flask import Flask
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
# ...

相关内容

  • 没有找到相关文章

最新更新