module 'X' has no attribute 'Y'
Explication
Causes courantes
- **Faute de frappe** ou mauvais nom d'attribut. - **Un fichier local masque le module** : un fichier `math.py` à vous cache la bibliothèque standard `math`. - **Import circulaire** : le module n'est que partiellement initialisé au moment de l'accès. - **Version différente** : l'attribut a été ajouté ou retiré dans une autre version du paquet. - **Sous-module non importé** : `import os` puis `os.path.join` fonctionne, mais certains sous-modules demandent un import explicite.
1. Vérifiez le nom exact disponible
import time
print([a for a in dir(time) if not a.startswith("_")])
# affiche les attributs réels : 'sleep', 'time', ...
2. Ne nommez jamais un fichier comme un module
Un fichier random.py, math.py, email.py ou token.py à vous masque la bibliothèque standard. Renommez-le, et supprimez le __pycache__ associé.
3. Résolvez les imports circulaires
Si deux modules s'importent mutuellement, déplacez l'import à l'intérieur de la fonction qui l'utilise, ou extrayez le code commun dans un troisième module.
4. Vérifiez la version du paquet
import un_paquet
print(un_paquet.__version__) # certains attributs changent selon la version
Comment prevenir cette erreur
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacter