Heroku Python 本地环境变量
Heroku Python Local Environment Variables
正在处理 heroku django 项目。
目标:我想 运行 本地服务器也使用云上的相同代码(有意义)。
问题:
环境不同于 linux 服务器 (heroku) 和本地 PC windows 系统。
本地环境变量不同于云 Heroku 配置变量。
可以使用 CLI heroku config:set TIMES=2
.
轻松设置 Heroku 配置变量
虽然设置本地环境变量是一团糟。
我在 cmd 中尝试了以下操作:
py -c "import os;os.environ['Times']=2"
# 设置环境变量
然后 运行 py -c "import os;os.environ.get('Times','Not Found')"
标准输出:“未找到”。
经过一些研究后,似乎这种环境变量是根据 process/session 使用情况临时存储的。
解决方案理论:将os.environ
重定向到根heroku项目的.env
文件而不是PC环境变量。所以我发现这个工具 direnv 非常适合类 Unix 操作系统,但不适用于 Windows。
views.py
代码(运行 在云上完美,在本地机器上有问题):
import os
import requests
from django.shortcuts import render
from django.http import HttpResponse
from .models import Greeting
def index(request):
# get method takes 2 parameters (env_var_string,return value if var is not found)
times = int(os.environ.get('TIMES',3))
return HttpResponse('<p>'+ 'Hello! ' * times+ '</p>')
def db(request):
greeting = Greeting()
greeting.save()
greetings = Greeting.objects.all()
return render(request, "db.html", {"greetings": greetings})
主要问题:是否有适当的方法在 windows 中本地隐藏机密并通过 os.environ['KEY']
访问它们?
另一个解决方案理论:我想知道 python 虚拟环境是否有自己的环境变量。如果是,我会在不影响云的情况下在本地激活一个 venv。因此 os.environ['KEY']
被重定向到 venv 变量。同样,这只是一个理论。
您可以使用通过 os.environ['KEY']
获得的环境变量。
相同的代码将适用于本地开发和 Heroku。
在 Heroku 上使用 ConfigVars heroku config:set KEY=val
定义这些变量,而在本地(例如在 Windows 上)在 .env
文件中定义相同的变量(使用 dotenv 加载他们)。 .env
文件永远不会与源代码一起提交。
正在处理 heroku django 项目。
目标:我想 运行 本地服务器也使用云上的相同代码(有意义)。
问题:
环境不同于 linux 服务器 (heroku) 和本地 PC windows 系统。
本地环境变量不同于云 Heroku 配置变量。
可以使用 CLI heroku config:set TIMES=2
.
虽然设置本地环境变量是一团糟。
我在 cmd 中尝试了以下操作:
py -c "import os;os.environ['Times']=2"
# 设置环境变量
然后 运行 py -c "import os;os.environ.get('Times','Not Found')"
标准输出:“未找到”。
经过一些研究后,似乎这种环境变量是根据 process/session 使用情况临时存储的。
解决方案理论:将os.environ
重定向到根heroku项目的.env
文件而不是PC环境变量。所以我发现这个工具 direnv 非常适合类 Unix 操作系统,但不适用于 Windows。
views.py
代码(运行 在云上完美,在本地机器上有问题):
import os
import requests
from django.shortcuts import render
from django.http import HttpResponse
from .models import Greeting
def index(request):
# get method takes 2 parameters (env_var_string,return value if var is not found)
times = int(os.environ.get('TIMES',3))
return HttpResponse('<p>'+ 'Hello! ' * times+ '</p>')
def db(request):
greeting = Greeting()
greeting.save()
greetings = Greeting.objects.all()
return render(request, "db.html", {"greetings": greetings})
主要问题:是否有适当的方法在 windows 中本地隐藏机密并通过 os.environ['KEY']
访问它们?
另一个解决方案理论:我想知道 python 虚拟环境是否有自己的环境变量。如果是,我会在不影响云的情况下在本地激活一个 venv。因此 os.environ['KEY']
被重定向到 venv 变量。同样,这只是一个理论。
您可以使用通过 os.environ['KEY']
获得的环境变量。
相同的代码将适用于本地开发和 Heroku。
在 Heroku 上使用 ConfigVars heroku config:set KEY=val
定义这些变量,而在本地(例如在 Windows 上)在 .env
文件中定义相同的变量(使用 dotenv 加载他们)。 .env
文件永远不会与源代码一起提交。