簡體   English   中英

在 Ubuntu 中為 Heroku / python 應用程序設置環境變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM