Я развиваюсь на Heroku, используя переменные config
для хранения чувствительных и других переменных окружения. При локальном развитии я отразил эти переменные в файле .env
.Экологические переменные из файла .env недоступны во время локальных миграций в django, heroku
Что я сейчас вижу, переменные из файла .env
не загружаются во время миграции. Они загружаются при запуске локального веб-сервера с heroku local
, но НЕ загружают для миграции. Это не было проблемой, в то время как мое локальное приложение все еще использовало базу данных sqlite3 по умолчанию, потому что база данных по умолчанию sqlite была «жестко закодирована» в файле настроек. Однако недавно я хочу использовать локальную базу данных Postgresql для локального разработчика. ОК, поэтому я добавил переменную DATABASE_URL
в файл .env
.
Я не могу заставить свое локальное приложение перейти на БД. Я выяснил, что это связано с тем, что содержимое .env
не добавлено в перенаправление отображения .
Чтобы проверить, я добавил переменную тест на .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, в raise Exception (" Нет .vvv vars found. ") Исключение: нет .env vars найдено.
Однако я могу запустить heroku local
и нет ошибок. Я также провел дополнительное тестирование, чтобы гарантировать, что переменные .env
доступны во время heroku local
.
По разным причинам я хочу установить свою локальную строку подключения DB в файле .env
, но на данный момент это кажется невозможным. Это правильное поведение для джанго на героку? .env
переменные файла доступны только при запуске сервера, а не для переноса?
Я на самом деле просто понял это после долгого weekend-> 'Heroku МЕСТНЫЙ: питон 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 –