Comment corriger "ImportError: cannot import name 'get_sentinel' from partially initialized module 'authentication.models' (most likely due to a circular import)"

Comme dans tout langage de programmation avancée, le langage Python permet de diviser ses programmes en plusieurs fichiers. Ce système permet de répartir le code et la logique de notre application en différents fichiers. Cette méthode simplifie grandement la manière de coder une application ou un site web. Des modèles d'architecture d'une application ont même vu le jour, comme le modèle MVC (Modèle – vues – contrôleurs) qui sépare en 3 couches distinctes une application. Dans le langage Python, c'est la notion de module, de package, et la directive import qui permettent de séparer les fichiers et d'importer le code quand on en a besoin. Le message "most likely due to a circular import" vient d'un souci dans vos imports.

Ce message d'erreur indique que dans votre code vous effectuez un import circulaire. Cela peut se produire si, en effectuant plusieurs imports, vous importez un fichier 2 fois. Cela conduit à un import circulaire, ce qui est interdit car on ne peut pas continuer l'exécution du code, le programme reste bloqué dans les imports. Vous devez parcourir vos imports pour retrouver quel module est importé plusieurs fois.

# Exemple d'import circulaire
# fichier module_1.py
from module_2 import mon_element_2
# fichier module_2.py
from module_1 import mon_element_1

Il existe une autre cause conduisant à un import circulaire. Vous ne pouvez avoir dans votre programme un fichier avec un nom identique à une de vos dépendances. Par exemple, vous ne pouvez pas avoir dans votre programme un fichier "module_1.py" qui, à l'intérieur, importe comme dépendance le paquet "module_1". Vous devez dans ce cas renommer votre fichier. Le message disparaîtra si le fichier se nomme "module_1_utilitaire.py".

Python