2017-02-14 5 views
1

Я создал новый проект с cookjecutter django. Я установил переменную окружения DJANGO_READ_DOT_ENV_FILE = True (, устанавливая ее в False, также вызывает чтение .ENV-файла. Кстати, на python предполагается, что переменная среды True является строкой, а не bool).запуск запуска django runerver с использованием локальных настроек, когда продукция была идентифицирована в .env-файле

В .env файле есть следующая строка:

DJANGO_SETTINGS_MODULE=config.settings.production 

Когда я бегу

python manage.py runserver

Я получаю следующий вывод:

Loading : /home/bucket/src/b2b/.env 
The .env file has been loaded. See common.py for more information 
Loading : /home/bucket/src/b2b/.env 
The .env file has been loaded. See common.py for more information 
Performing system checks... 

System check identified no issues (0 silenced). 
February 14, 2017 - 20:20:55 
Django version 1.10.5, using settings 'config.settings.local' 
Starting development server at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 

Согласно выше, конфигурация сервера - config.settings.local. Я знаю, что файл .env загружается, так как переменная DATABASE_URL верна и подключается к базе данных.

Он также выглядит как код для загрузки переменных из файла .env выполняется дважды. Я помещал некоторые операторы печати в common.py и local.py для отслеживания выполнения с приведенными ниже результатами.

Loading : /home/bucket/src/b2b/.env 
The .env file has been loaded. See common.py for more information 
End of common.py <-- 
End of local.py <-- 
Loading : /home/bucket/src/b2b/.env 
The .env file has been loaded. See common.py for more information 
End of common.py <-- 
End of local.py <-- 
Performing system checks... 

System check identified no issues (0 silenced). 
February 14, 2017 - 20:22:40 
Django version 1.10.5, using settings 'config.settings.local' 
Starting development server at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 

Любая помощь или разъяснения в отношении этого поведения будут оценены.

+0

Я думаю, что вы могли бы ударить пару вопросов в Cookiecutter -Django. [Выпуск 1039] (https://github.com/pydanny/cookiecutter-django/issues/1039) должен исправить проблему, когда среда читается, когда 'DJANGO_READ_DOT_ENV_FILE = False'. [Это коммит] (https://github.com/pydanny/cookiecutter-django/commit/3cd57880e0bfa3d48ecd338fabe7f74e71800f01) может решить проблему, когда среда читалась дважды. – Alasdair

+1

Я удалил избыточный вызов env, и он все равно вызывается дважды. Я был тем, кто отправил Issue 1039 :-) –

+0

Файлы настроек загружаются дважды только при работе с сервером. Если я выполняю миграцию, оболочку или другую команду, она запускает их только один раз. –

ответ

0

Файл .env предназначен для использования с Docker, но это отличная идея!

Я запускаю сервер Debian с использованием Apache, а файл .env не работает, вместо этого я должен продолжить «шаблон файла секретов», который хранит эти переменные в json-файле. Если я действительно хочу «runserver», используя файл «.env», не устанавливать какие-либо переменные окружения, прежде чем в моей системе, я должен установить следующее „True“, в настройках base.py:

READ_DOT_ENV_FILE = env.bool('DJANGO_READ_DOT_ENV_FILE', default=True) 

Я не уверен, но выше, чем выше, «DJANGO_READ_DOT_ENV_FILE» сообщается в файле «.env». Таким образом, вы должны установить «True» направить в «base.py», то это будет возможно загрузить ваши настройки непосредственно через manage.py:

$ python manage.py runserver --settings=config.settings.local 
or 
$ python manage.py runserver --settings=config.settings.production