2017-02-14 1 views
1

Ich habe ein neues Projekt mit Cookiecutter Django erstellt. Ich setze die Umgebungsvariable DJANGO_READ_DOT_ENV_FILE = True (setzt es auf False verursacht auch die .env-Datei gelesen werden BTW. Ich denke, dass Python davon ausgeht, dass die Umgebungsvariable von True ist eine Zeichenfolge nicht bool).Django Runserver Start mit lokalen Einstellungen, wenn die Produktion in .env Datei identifiziert wurde

In der .env Datei gibt es die folgende Zeile ein:

DJANGO_SETTINGS_MODULE=config.settings.production 

Wenn ich laufen

python manage.py runserver

ich folgende Ausgabe:

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. 

Nach der oben ist die Serverkonfiguration config.settings.local. Ich weiß, dass die .env-Datei geladen wird, da die DATABASE_URL-Variable korrekt ist und eine Verbindung zur Datenbank herstellt.

Es sieht auch so aus, als ob der Code zum Laden von Variablen aus der .env-Datei zweimal ausgeführt wird. Ich gebe einige print-Anweisungen in common.py und local.py ein, um die Ausführung mit den folgenden Ergebnissen zu verfolgen.

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. 

Jede Hilfe oder Erklärung für dieses Verhalten wäre willkommen.

+0

Ich glaube, Sie könnten ein paar Probleme in Cookiecutter getroffen haben -Django. [Ausgabe 1039] (https://github.com/pydanny/cookiecutter-django/issues/1039) sollte das Problem beheben, bei dem die Umgebung gelesen wird, wenn 'DJANGO_READ_DOT_ENV_FILE = False 'ist. [Dieses Commit] (https://github.com/pydanny/cookiecutter-django/commit/3cd57880e0bfa3d48ecd338fabe7f74e71800f01) könnte das Problem beheben, dass die Umgebung zweimal gelesen wurde. – Alasdair

+1

Ich habe den redundanten env Anruf entfernt und es wird immer noch zweimal angerufen. Ich war die Person, die die Ausgabe 1039 eingereicht hat :-) –

+0

Die Einstellungsdateien werden nur zweimal geladen, wenn runserver ausgeführt wird. Wenn ich einen migrate-, shell- oder anderen Befehl ausführe, werden sie nur einmal ausgeführt. –

Antwort

0

Die .env-Datei soll mit Docker verwendet werden, aber es ist eine großartige Idee!

Ich verwende einen Debian-Server mit Apache und die '.env' Datei funktioniert nicht, stattdessen muss ich mit dem 'secrets file pattern' fortfahren, das diese Variablen in einer JSON-Datei speichert. Wenn ich wirklich ‚runserver‘ möge, mit der ‚.env‘ Datei, ohne Umgebungsvariablen vor auf meinem System, ich habe folgende auf ‚True‘, in den base.py Einstellungen festlegen:

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

Ich bin mir nicht sicher, aber die obigen übertreffen die 'DJANGO_READ_DOT_ENV_FILE' in der '.env' Datei informiert. So müssen Sie ‚True‘ direkt in der ‚base.py‘ gesetzt, dann wird es möglich sein, Ihre Einstellungen durch manage.py direkt zu laden:

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