j'utilise dotenv dans un projet flask, et j'ai également testé cela dans un environnement de test simplifié. J'ai essayé de désinstaller et de réinstaller etc. mais le module dotenv ne peut pas être trouvé par python.
Au démarrage de flask il voit qu'il y a des fichiers .env et me dit d'installer dotenv même s'il est installé et je peux le voir dans les bibliothèques système des flacons.
Lorsque j'exécute du code, j'obtiens une erreur de module introuvable indiquant qu'il ne peut pas trouver dotenv. Le code est
import os
from dotenv import load_dotenv
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
et l'erreur est
Tout conseil accepté avec reconnaissance.
Il s'avère qu'il y avait un certain nombre de problèmes avec mon code et je vais les énumérer brièvement ici au cas où quelqu'un d'autre rencontrerait les mêmes problèmes.
Étant relativement nouveau, je ne sais pas vraiment comment l'écosystème python que j'ai installé se bloque tous ensemble. J'ai installé Anaconda et Spyder comme environnement de développement. Cependant, j'ai suivi un Flask tutoriel qui utilise pip comme programme d'installation avec des environnements virtuels. La commande Invite que j'utilise est celle fournie avec Anaconda. Tout semblait fonctionner correctement d'une manière ou d'une autre, jusqu'à ce que j'obtienne le problème dotenv, qui est en fait un tout petit détail dans le didacticiel global plutôt volumineux.
Pour corriger dotenv, j'essayais toutes sortes d'installation/désinstallation avec pip, je pouvais voir dotenv était déjà installé! Ça n'a pas marché. Ce qui a fonctionné, c'était l'installation de dotenv avec conda dans mon invite de commande, mais je devais être explicite sur où obtenir dotenv. La commande qui a fonctionné était
conda install -c conda-forge python-dotenv
Une fois l'installation de dotenv terminée, je n'ai pas pu définir les variables d'environnement à partir du fichier .env
. Le didacticiel utilise os.path.dirname(__file__)
pour obtenir le répertoire de travail actuel. Il s'avère que __file__
Est toujours en minuscules, mais mon répertoire contient des majuscules. Par conséquent, le chemin absolu du fichier .env
Est introuvable! J'ai corrigé cela en utilisant le module pathlib intégré qui respecte la casse. Voici du code.
import os
from pathlib import Path
from dotenv import load_dotenv
# Get the base directory
basepath = Path()
basedir = str(basepath.cwd())
# Load the environment variables
envars = basepath.cwd() / '.env'
load_dotenv(envars)
# Read an environment variable.
SECRET_KEY = os.getenv('SECRET_KEY')