web-dev-qa-db-fra.com

django.core.exceptions.ImproperlyConfigured: paramètre demandé CACHES, mais les paramètres ne sont pas configurés Vous devez soit définir la variable d'environnement

J'ai essayé tout ce que je pouvais trouver pour résoudre ce problème, et je commence à m'arracher les cheveux un peu… .. Je reçois cette erreur:

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.

Mes scripts fonctionnent bien quand je le fais:

python3 ./manage.py runserver

Cependant, chaque fois que j'essaye d'exécuter des tests, j'obtiens l'erreur ci-dessus ........ J'utilise un VirtualEnv, qui n'hérite de manière globale, tout est installé (avec la version correcte) et, dans mon fichier manage.py,

os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.settings")

J'utilise PyCharm Proffesional pour le développement et j'ai essayé d'exécuter les tests à la fois dans l'IDE et dans le shell . Dans le shell que j'utilise:

python3 manage.py test     

Le shell ne trouve aucun test. Le test est basique, et je ne me préoccupe pas vraiment de son contenu actuel, mais de mon environnement.UPDATE: J'ai résolu le problème avec le shell. Les tests doivent être définis par:

def test_<name>():

Cependant, cela n'a pas résolu mon problème avec PyCharm. J'ai aussi appelé:

settings.configure()

Ce qui m'a dit qu'il était déjà configuré.
Veuillez noter que je pas n’utilise aucune base de données avec Django, et j’ai commenté les éléments appropriés en dehors des paramètres.

L'erreur complète est:

  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.

J'ai exécuté PyCharm sous Sudo pour m'assurer que le problème n'était pas une autorisation, car je stockais env sous root.

EDIT: Je viens de découvrir que mes tests qui n’utilisent pas Django fonctionnent correctement, mais Pycharm continue de générer plusieurs échecs. Ces échecs ne sont pas les tests individuels, ils sont juste l'erreur que j'ai mentionnée ici (il y a 341 tests qui ne sont pas liés à Django). Je n'ai qu'un seul test qui utilise Django, qui ne dépassera pas l'initialisation et le rejet de l'erreur mentionnée.

J'espère que j'ai été explicatif

25
Maximas

Si vous utilisez PyCharm Pro, vous pouvez soit tester votre application en effectuant une action "Lancer Django Console ...". Une fois que vous avez cliqué sur "tester", il vous demandera l'application que vous souhaitez tester.

enter image description here

ou

Créez un test Django dans la configuration Run/Debug.

enter image description here

7
yehe

Utilisez ceci

import os

os.environ['Django_SETTINGS_MODULE'] = 'mysite.settings'

au lieu de 

os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.settings")
27
Vishal Sharma

Dans votre script python, vous essayez d'accéder aux modèles Django avant de définir l'environnement, essayez-le dans cet ordre:

os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.`settings`")
from <appname>.models import Class1, Class2,...
10
Hijane

depuis, je ne veux pas ajouter ceci dans chaque fichier, j'ai créé un fichier appelé usercustomize.py et ajouté ce contenu:

import os
os.environ['Django_SETTINGS_MODULE']='foosite.settings'

Le chemin du fichier dans mon cas:

src/foosite/usercustomize.py

J'ai installé foosite avec "pip install -e". Je ne suis pas sûr que cela fonctionne pour les installations normales.

2
guettli

Si vous utilisez PyCharm, vous avez peut-être oublié de choisir votre configuration de débogage ici:

 PyCharm Screenshot

0
Josh

J'ai eu cette erreur lorsque j'ai importé TestCase à partir de unittest2. Je l'ai corrigé en important TestCase par:

from Django.test import TestCase

Mes soupçons ont été soulevés lorsque le test a été étiqueté "Unittest" plutôt que "Test". Je devais exécuter toute la suite avant que Pycharm ne réalise que j'avais apporté ce changement ...

0
Steve Bradshaw