gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:17:56 25 4
gpt4 key购买 nike

我一直在 Heroku 上开发,使用 config 变量来存储敏感变量和其他环境变量。在本地开发时,我在 .env 文件中镜像了这些变量。

我现在发现的是 .env 文件中的变量不会在迁移期间加载。它们在使用 heroku local 运行本地 Web 服务器时加载,但不加载迁移。当我的本地应用程序仍在使用默认的 sqlite3 数据库时,这不是问题,因为 sqlite 默认数据库在设置文件中是“硬编码”的。但是最近我想将我的本地 Postgresql 数据库用于本地开发。好的,所以我将 DATABASE_URL 变量添加到我的 .env 文件中。

我无法让我的本地应用程序迁移到数据库。我发现这是因为 .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:

File "/Users/apple/heroku/b/b/settings.py", line 16, in raise Exception("No .env vars found.") Exception: No .env vars found.

但是我可以运行 heroku local 并且没有错误。我还做了进一步的测试,以确保 .env 变量在 heroku local 期间可用。

出于各种原因,我想在 .env 文件中设置我的本地数据库连接字符串,但目前似乎不可能。这是 django 在 heroku 上的正确行为吗? .env 文件变量只能在运行服务器时访问,不能用于迁移?

最佳答案

我终于发现,简单地运行 python manage.py migrate 对加载 .env 文件变量没有任何作用。您需要在 heroku local 环境中运行命令:

heroku local:run python manage.py migrate

https://devcenter.heroku.com/articles/heroku-local#run-your-app-locally-using-the-heroku-local-command-line-tool-run-a-one-off-command-locally

关于python - .env 文件中的环境变量在 django、heroku 的本地迁移期间不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38437170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com