Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
Python 在heroku django的本地迁移期间,.env文件中的环境变量不可用_Python_Django_Postgresql_Heroku_Migration - Fatal编程技术网

Python 在heroku django的本地迁移期间,.env文件中的环境变量不可用

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文件中 我无法

我一直在Heroku上开发,使用
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