Ich habe alles versucht, was ich finden konnte, um dieses Problem zu beheben, und ich fange an, mir die Haare ein wenig herauszureißen ... Ich bekomme diese Fehlermeldung:
Django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable Django_SETTINGS_MODULE or call settings.configure() before accessing settings.
Meine Skripte laufen gut, wenn ich:
python3 ./manage.py runserver
Immer wenn ich versuche, Tests auszuführen, erhalte ich den obigen Fehler ....__ Ich verwende eine VirtualEnv, die nichts global erbt, alles installiert ist (mit der korrekten Version) und in meinem manage.py eingestellt habe
os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.settings")
Ich verwende PyCharm Proffesional für die Entwicklung, und ich habe versucht, die Tests sowohl in der IDE als auch in der Shell auszuführen. Innerhalb der Shell verwende ich:
python3 manage.py test
Die Shell findet keine Tests. Der Test ist grundlegend, und ich habe mich nicht wirklich mit dem Inhalt beschäftigt, da es die Umgebung ist, mit der ich zu kämpfen habe.UPDATE: Ich habe das Problem mit der Shell gelöst. Tests müssen definiert werden durch:
def test_<name>():
Dies hat jedoch mein Problem mit PyCharm nicht gelöst. Ich habe auch angerufen:
settings.configure()
Was sagte mir, dass es bereits konfiguriert war.
Bitte beachte, dass ich not keine Datenbank mit Django verwende, und ich habe die entsprechenden Dinge aus den Einstellungen heraus kommentiert.
Der volle Fehler ist:
Traceback (most recent call last):
File "/root/kiloenv/lib/python3.4/site-packages/Django/conf/__init__.py", line 38, in _setup
settings_module = os.environ[ENVIRONMENT_VARIABLE]
File "/usr/lib/python3.4/os.py", line 631, in __getitem__
raise KeyError(key) from None
KeyError: 'Django_SETTINGS_MODULE'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/<username>/Documents/<dirname>/<appname>/tests.py", line 1, in <module>
from Django.test.utils import setup_test_environment
File "/root/virtualenv/lib/python3.4/site-packages/Django/test/__init__.py", line 5, in <module>
from Django.test.client import Client, RequestFactory
File "/root/virtualenv/lib/python3.4/site-packages/Django/test/client.py", line 11, in <module>
from Django.contrib.auth import authenticate, login, logout, get_user_model
File "/root/virtualenv/lib/python3.4/site-packages/Django/contrib/auth/__init__.py", line 6, in <module>
from Django.middleware.csrf import rotate_token
File "/root/virtualenv/lib/python3.4/site-packages/Django/middleware/csrf.py", line 14, in <module>
from Django.utils.cache import patch_vary_headers
File "/root/virtualenv/lib/python3.4/site-packages/Django/utils/cache.py", line 26, in <module>
from Django.core.cache import get_cache
File "/root/virtualenv/lib/python3.4/site-packages/Django/core/cache/__init__.py", line 69, in <module>
if DEFAULT_CACHE_ALIAS not in settings.CACHES:
File "/root/virtualenv/lib/python3.4/site-packages/Django/conf/__init__.py", line 54, in __getattr__
self._setup(name)
File "/root/virtualenv/lib/python3.4/site-packages/Django/conf/__init__.py", line 47, in _setup
% (desc, ENVIRONMENT_VARIABLE))
Django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable Django_SETTINGS_MODULE or call settings.configure() before accessing settings.
Ich habe PyCharm unter Sudo ausgeführt, um sicherzustellen, dass das Problem keine Berechtigungen war, da ich das Env unter root speichere.
EDIT: Ich habe gerade entdeckt, dass meine Tests, die Django nicht verwenden, gut laufen, aber Pycharm immer noch einige Fehler auslöst. Diese Fehler sind nicht die einzelnen Tests, sondern lediglich der Fehler, den ich hier erwähnt habe (es gibt 341 Tests, die nicht mit Django zusammenhängen). Ich habe nur einen Test, der Django verwendet, der die Initialisierung nicht übersteht und den erwähnten Fehler auslöst.
Ich hoffe, ich war erklärend
Wenn Sie PyCharm Pro verwenden, können Sie Ihre App entweder mit der Aktion "Django Console ausführen ..." testen. Nachdem Sie auf "Test" geklickt haben, werden Sie zur Eingabe der App aufgefordert, die Sie testen möchten.
oder
Erstellen Sie einen Django-Test in der Run/Debug-Konfiguration.
Benutze das
import os
os.environ['Django_SETTINGS_MODULE'] = 'mysite.settings'
anstatt
os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.settings")
In Ihrem Python-Skript versuchen Sie, auf Django-Modelle zuzugreifen, bevor Sie die Umgebung einrichten. Versuchen Sie es in dieser Reihenfolge:
os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.`settings`")
from <appname>.models import Class1, Class2,...
da ich dies nicht in jeder Datei hinzufügen möchte, habe ich eine Datei namens usercustomize.py erstellt und diesen Inhalt hinzugefügt:
import os
os.environ['Django_SETTINGS_MODULE']='foosite.settings'
Der Dateipfad in meinem Fall:
src/foosite/usercustomize.py
Ich habe Foosite mit "pip install -e" installiert. Ich bin nicht sicher, ob dies für normale Installationen funktioniert.
In meinem Fall musste ich verwenden
python3 manage.py check --deploy
anstatt von
Django-admin check --deploy
Ich habe diese Fehlermeldung erhalten, als ich TestCase von unittest2 importierte. Ich habe es durch Importieren von TestCase behoben:
from Django.test import TestCase
Mein Verdacht wurde geweckt, als der Test als "Test" und nicht als "Test" bezeichnet wurde. Ich musste die ganze Suite ausführen, bevor Pycharm erkannte, dass ich diese Änderung vorgenommen hatte ...