Python 在heroku django的本地迁移期间,.env文件中的环境变量不可用
我一直在Heroku上开发,使用Python 在heroku django的本地迁移期间,.env文件中的环境变量不可用,python,django,postgresql,heroku,migration,Python,Django,Postgresql,Heroku,Migration,我一直在Heroku上开发,使用config变量存储敏感变量和其他环境变量。在本地开发时,我在.env文件中镜像了这些变量 我现在发现,.env文件中的变量在迁移期间不会加载。它们在使用heroku local运行本地web服务器时加载,但不加载迁移。当我的本地应用程序仍在使用默认的sqlite3数据库时,这不是问题,因为sqlite默认数据库在设置文件中是“硬编码”的。但是最近我想使用我的本地Postgresql数据库进行本地开发。好的,所以我将数据库URL变量添加到我的.env文件中 我无法
config
变量存储敏感变量和其他环境变量。在本地开发时,我在.env
文件中镜像了这些变量
我现在发现,.env
文件中的变量在迁移期间不会加载。它们在使用heroku local运行本地web服务器时加载,但不加载迁移。当我的本地应用程序仍在使用默认的sqlite3数据库时,这不是问题,因为sqlite默认数据库在设置文件中是“硬编码”的。但是最近我想使用我的本地Postgresql数据库进行本地开发。好的,所以我将数据库URL
变量添加到我的.env
文件中
我无法让我的本地应用迁移到DB。我发现这是因为在迁移过程中,.env
文件内容没有添加到os.environ
映射中
为了进行测试,我在.env
文件中添加了一个测试变量:
TEST="teeeest"
然后在settings.py
中:
import os
import dj_database_url
if "TEST" not in os.environ:
raise Exception("No .env vars found.")
我尝试了python manage.py migrate
:
文件“/Users/apple/heroku/b/b/settings.py”,第16行,在
引发异常(“未找到任何环境变量”)异常:未找到任何环境变量
但是,我可以运行heroku local,并且没有错误。我还做了进一步的测试,以确保.env
变量在heroku local
期间可用
出于各种原因,我想在
.env
文件中设置本地DB连接字符串,但目前似乎不可能。这是django在heroku上的正确行为吗.env
文件变量仅在运行服务器时才可访问,不可用于迁移?manage.py
不知道有关.env文件的任何信息。您需要在执行以下操作的情况下运行该命令:;要么是Heroku本身使用的,要么是Python实现。我最终发现,仅仅运行Python manage.py migrate
并不能加载.env
文件变量。您需要在heroku local环境中运行以下命令:
heroku local:run python manage.py migrate
事实上,经过一个漫长的周末后,我才找到答案-->
heroku local:运行python manage.py migrate
。