[英]Setting environment variables for Heroku / python app in Ubuntu
我已經閱讀了一些操作方法,但仍在為此苦苦掙扎。 在我的應用程序中,我之前只是從文件夾系統中的 .py 文件中提取我的密鑰(這不是最佳實踐)。 相反,我想使用 os 模塊在我的開發環境中獲取我的密鑰(最終在 heroku 中執行相同的操作),類似於下面的代碼:
import os
OAUTH_TOKEN = os.getenv('OAUTH_TOKEN')
我已經讀到我需要將我的實際 OAUTH_TOKEN 添加到 .profile 文件中才能正常工作。
OAUTH_TOKEN = 'mysecretkey'
但是,當我運行上面的第一段代碼並嘗試打印 OAUTH_TOKEN 變量時,我什么也沒得到。 我還將我的密鑰添加到 .bashsrc 文件以及其他一些據說這樣做的網站。
發生了什么事,為什么我不能以這種方式檢索我的密鑰? 我錯過了什么?
要在使用 Python-Flask 應用程序時檢索您的密鑰,您需要安裝python-dotenv
。 這個 package 將有助於加載秘密甚至運行時環境變量。
(venv)$ pip3 install python-dotenv
在您的密鑰文件中,例如.env
,初始化您的秘密環境變量:
# .env
OAUTH_TOKEN='<your-secret-oauth-token>'
要加載OAUTH_TOKEN
,請使用 dotenv 中的load-dotenv
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)
# ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.