Résolue

Problème avec django-environ et .env

# Résolution d'erreurs # Stripe # Django

Bonjour,


J'ai suivi toutes les étapes de la vidéo mais à la fin je ne peux plus lancer mon serveur, j'obtiens "Invalid line: STRIPE_API_KEY = "sk_test......"

Je ne comprends pas trop pourquoi. La seule différence est dans le fichier gitignore que je n'avais pas mais j'ai essayé de le créer et d'ajouter .env mais rien n'y fait :/


La suite de l'erreur :


Traceback (most recent call last):

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/environ/environ.py", line 403, in get_value

   value = self.ENVIRON[var_name]

 File "/usr/lib/python3.9/os.py", line 679, in __getitem__

   raise KeyError(key) from None

KeyError: 'STRIPE_API_KEY'


The above exception was the direct cause of the following exception:


Traceback (most recent call last):

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/src/manage.py", line 22, in <module>

   main()

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/src/manage.py", line 18, in main

   execute_from_command_line(sys.argv)

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line

   utility.execute()

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 413, in execute

   self.fetch_command(subcommand).run_from_argv(self.argv)

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/core/management/base.py", line 354, in run_from_argv

   self.execute(*args, **cmd_options)

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 61, in execute

   super().execute(*args, **options)

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/core/management/base.py", line 398, in execute

   output = self.handle(*args, **options)

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 68, in handle

   if not settings.DEBUG and not settings.ALLOWED_HOSTS:

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__

   self._setup(name)

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setup

   self._wrapped = Settings(settings_module)

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__

   mod = importlib.import_module(self.SETTINGS_MODULE)

 File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module

   return _bootstrap._gcd_import(name[level:], package, level)

 File "<frozen importlib._bootstrap>", line 1030, in _gcd_import

 File "<frozen importlib._bootstrap>", line 1007, in _find_and_load

 File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked

 File "<frozen importlib._bootstrap>", line 680, in _load_unlocked

 File "<frozen importlib._bootstrap_external>", line 850, in exec_module

 File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/src/shop/settings.py", line 137, in <module>

   STRIPE_API_KEY = env('STRIPE_API_KEY')

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/environ/environ.py", line 197, in __call__

   return self.get_value(

 File "/home/carpentier/Documents/Python/Docstring/Formation_Django/Projets/DocShop/venv/lib/python3.9/site-packages/environ/environ.py", line 407, in get_value

   raise ImproperlyConfigured(error_msg) from exc

django.core.exceptions.ImproperlyConfigured: Set the STRIPE_API_KEY environment variable


Process finished with exit code 1


Dans mon fichier settings.py, j'ai :


from pathlib import Path

import environ

env = environ.Env()

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

environ.Env.read_env(BASE_DIR / ".env")



STRIPE_API_KEY = env('STRIPE_API_KEY')



Si vous y comprenez quelque chose, je suis preneur car sur internet je n'ai rien trouvé. Ils indiquent la même procédure que Thibault. Peut-être qu'un oeil vierge verra l'erreur, qui doit être une erreur toute bête...


Merci d'avance!


Bonne journée,


Hugo

Hello je regarderai plus en détail ce soir mais il n’y aurait pas des espaces juste avant et après le ‘=‘ dans ta déclaration dans ton fichier .env ?

Salut PA, c'était tout à fait ça ! J'aurais pu chercher longtemps. Merci beaucoup !

J'espère que cette question en aidera d'autres :)

Avec plaisir ! J ‘ai déjà eu ce problème =D.


J'ai exactement le même traceback,


Je comprend pas pourquoi je n'arrive pas a lire STRIPE_API_KEY

settings.py :

import environ

environ.Env.read_env(BASE_DIR / ".env")


STRIPE_API_KEY = env("STRIPE_API_KEY")


.env :

STRIPE_API_KEY="<clé_secrete>"


D'où ça peut venir ?


En attendant la réponse je la met directement dans mon fichier settings.py pour pouvoir avancer un peu

Salut ,


ton fichier .env est bien dans le BASE_DIR ?


dans le message d’erreur html que te donne le serveur de développement django quand tu as lancé

python manage.py runserver


assures toi de la valeur de BASE_DIR et vérifie que tu as bien ton fichier .env à cet endroit .


dis nous si ce n’est pas ça le problème.

Il est bien au bon endroit oui

Ce n'est pas un message d'erreur html, le server n'a pas le temps de se lancer c'est un message d'érreur dans le terminal

Thibault houdon

Mentor

Bonsoir Christian,


Quel est le message d'erreur précis que tu as ? C'est le même qu'Hugo ?

Je comprend pas trop comment j'ai fait mais maintenant ça fonctionne ...

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.