我读了一些如何操作的文章,但仍在努力解决这个问题。在我的应用程序中,我以前只是从文件夹系统中的.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)
# ...