Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ubuntu中为Heroku/python应用程序设置环境变量_Python_Ubuntu_Heroku - Fatal编程技术网

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

在Ubuntu中为Heroku/python应用程序设置环境变量,python,ubuntu,heroku,Python,Ubuntu,Heroku,我读过一些how-tos,但仍在努力解决这个问题。在我的应用程序中,我以前只是从文件夹系统中的.py文件中提取密钥(这不是最佳做法)。相反,我希望使用操作系统模块在我的开发环境中获取我的密钥(最终在heroku中也是如此),类似于下面的代码: import os OAUTH_TOKEN = os.getenv('OAUTH_TOKEN') 我已经读到,我需要将实际的OAUTH_令牌添加到.profile文件中,以使其工作 OAUTH_TOKEN = 'mysecretkey' 然而,

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

import os    
OAUTH_TOKEN = os.getenv('OAUTH_TOKEN')
我已经读到,我需要将实际的OAUTH_令牌添加到.profile文件中,以使其工作

OAUTH_TOKEN = 'mysecretkey'
然而,当我运行上面的第一段代码并试图打印OAUTH_令牌变量时,我没有得到任何回报。我还将我的密钥添加到了.bashsrc文件以及其他一些据说可以这样做的网站


发生了什么事?为什么我不能用这种方式检索我的密钥?我缺少什么?

要在使用Python Flask应用程序时检索您的密钥,您需要安装
Python dotenv
。这个包将有助于加载机密甚至运行时环境变量

(venv)$pip3安装python dotenv
在密钥文件中,例如,
.env
,初始化您的秘密环境变量:

#.env
OAUTH_令牌=“”
要加载
OAUTH\u令牌
,请使用
load dotenv
from
dotenv

#config.py
导入操作系统
从dotenv导入加载\u dotenv
加载_dotenv(“.env”)
类配置(对象):
OAUTH_TOKEN=os.getenv('OAUTH_TOKEN')
#或者OAUTH_TOKEN=os.environ.get('OAUTH_TOKEN')
在终端中,尝试检索
OAUTH_令牌的值,如下所示。我使用的是
flaskshell
命令,而不是
python3

#在应用程序上下文中启动python解释器
(venv)$烧瓶外壳
>>>从应用程序导入配置
>>>打印(app.config['OAUTH_TOKEN']))
#您的代币应该打印在这里
上面的假设是,在您的应用程序实例中,例如
\uuu init\uuuu.py
文件中,您已经导入了
Config

初始化
从烧瓶进口烧瓶
从配置导入配置
app=烧瓶(名称)
app.config.from_对象(config)
# ...

我从未将Procfile用于环境变量。我就是这样做的:它将以您指定的方式访问。感谢您的回复。我已经阅读了这些文档,我认为这是应用程序在heroku上启动时的环境变量。那么当我在我的机器上开发/测试它时呢?哦,你可以像这样将它们添加到你的.bashrc文件中:
export VARNAME=“my value”
。谢谢,原来我前面没有“export”,而且“=”周围也有空格。非常有用。