Falsch konfiguriert: Sie müssen entweder die Umgebungsvariable DJANGO_SETTINGS_MODULE definieren oder settings.configure () aufrufen, bevor Sie auf die Einstellungen zugreifen
Ich versuche zu konfigurieren, mein django-Projekt zur Bereitstellung auf heroku. Ich erhalte die folgende Fehlermeldung und ich weiß wirklich nicht, wie es zu lösen ist.
Hier ist die vollen traceback und Fehler:
22:46:15 web.1 | Traceback (most recent call last):
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/arbiter.py", line 495, in spawn_worker
22:46:15 web.1 | worker.init_process()
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/workers/base.py", line 106, in init_process
22:46:15 web.1 | self.wsgi = self.app.wsgi()
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/base.py", line 114, in wsgi
22:46:15 web.1 | self.callable = self.load()
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 62, in load
22:46:15 web.1 | return self.load_wsgiapp()
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load_wsgiapp
22:46:15 web.1 | return util.import_app(self.app_uri)
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app
22:46:15 web.1 | __import__(module)
22:46:15 web.1 | File "/Users/nir/nirla/nirla/wsgi.py", line 12, in <module>
22:46:15 web.1 | from dj_static import Cling
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/dj_static.py", line 7, in <module>
22:46:15 web.1 | from django.contrib.staticfiles.handlers import StaticFilesHandler as DebugHandler
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 8, in <module>
22:46:15 web.1 | from django.contrib.staticfiles.views import serve
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/contrib/staticfiles/views.py", line 13, in <module>
22:46:15 web.1 | from django.views import static
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/views/static.py", line 96, in <module>
22:46:15 web.1 | template_translatable = ugettext_noop("Index of %(directory)s")
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 65, in gettext_noop
22:46:15 web.1 | return _trans.gettext_noop(message)
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 52, in __getattr__
22:46:15 web.1 | if settings.USE_I18N:
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 54, in __getattr__
22:46:15 web.1 | self._setup(name)
22:46:15 web.1 | File "/Users/nir/nirla/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 47, in _setup
22:46:15 web.1 | % (desc, ENVIRONMENT_VARIABLE))
22:46:15 web.1 | ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Hier ist mein wsgi.py Datei:
import os
from django.core.wsgi import get_wsgi_application
from dj_static import Cling
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nirla.settings") #nirla is the name of the project
application = Cling(get_wsgi_application())
Werden, und im Fall es relevant war, meine manage.py Datei:
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nirla.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
Kann jedermann scheinen zu verstehen, dass das Problem hier? Und wenn dem so ist, können Sie so freundlich sein zu erklären, was falsch ist? Danke!
InformationsquelleAutor der Frage ApathyBear | 2014-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich dachte mir, dass die DJANGO_SETTINGS_MODULE gesetzt werden musste, so dass ich schaute auf die Dokumentation (link aktualisiert) und gefunden:
Aber das ist nicht genug, wenn Sie mit einem server auf heroku, müssen Sie es auch dort. Wie diese:
In meinem konkreten Fall lief ich diese beiden und alles hat geklappt:
Bearbeiten
Möchte ich auch darauf hinweisen, dass Sie haben, um re-tun Sie dies jedes mal, wenn Sie schließen, oder starten Sie Ihren virtuellen Umgebung. Stattdessen sollten Sie den Prozess automatisieren, indem Sie zu venv/bin/activate und das hinzufügen der Zeile:
set DJANGO_SETTINGS_MODULE=mysite.settings
an der Unterseite des Codes. Von nun an jedes mal, wenn Sie aktivieren die virtuelle Umgebung, die Sie verwenden werden, die app-Einstellungen.InformationsquelleAutor der Antwort ApathyBear
Vom The Definitive Guide to Django: Web Development Done Right:
InformationsquelleAutor der Antwort GrvTyagi
Django braucht Ihre anwendungsspezifischen Einstellungen. Da ist es schon in Ihrem manage.py nur. Der schnelleren, aber vielleicht vorübergehende Lösung ist::
InformationsquelleAutor der Antwort AfamO
Verwenden Sie den folgenden Befehl ein:
python manage.py shell
Dieser automatisch die django-Umgebungsvariablen.
InformationsquelleAutor der Antwort Vijay Srinivaas C.S.R
Erstellen Sie eine .env Datei, halten Sie Ihre Anmeldeinformationen an der Wurzel Ihres Projekts und lassen Sie es aus der Versionsverwaltung:
In der .env-Datei, fügen Sie die Variablen (passen Sie Sie entsprechend Ihrer installation):
Sie zu benutzen, setzen Sie diese auf Ihre production.py settings:
Veröffentlichen Sie auf Heroku mit diesem Juwel: http://github.com/ddollar/heroku-config.git
Diese Weise vermeiden Sie zu ändern, virtualenv-Dateien.
*Basierend auf dieser tutorial
InformationsquelleAutor der Antwort marcanuy