module 'X' has no attribute 'Y'

Python Erreur courante

Explication

L'erreur `AttributeError: module 'X' has no attribute 'Y'` signifie que vous accédez à un nom (`X.Y`) qui n'existe pas dans le module `X`. Soit le nom est mal orthographié, soit — piège classique — **un de vos fichiers porte le même nom qu'un module** et le masque. ```python import time time.sleep_ms(100) # sleep_ms n'existe pas (c'est time.sleep) # AttributeError: module 'time' has no attribute 'sleep_ms' ```

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

- **Évitez les noms de fichiers** identiques aux modules standard. - **Vérifiez `dir(module)`** quand un attribut « devrait » exister. - Épinglez les versions dans `requirements.txt` pour éviter les surprises d'API. - Référence : [docs.python.org — AttributeError](https://docs.python.org/fr/3/library/exceptions.html#AttributeError).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

J'ai un fichier `random.py` et `random.randint` ne marche plus, pourquoi ?
Parce que votre fichier `random.py` masque le module standard `random` : Python importe le vôtre, qui n'a pas `randint`. Renommez votre fichier et supprimez le `random.pyc` / `__pycache__`.
Comment lister les attributs réellement disponibles dans un module ?
Utilisez `dir(module)` ou `help(module)`. Cela révèle l'orthographe exacte et évite les fautes de frappe (`time.sleep` et non `time.sleep_ms`).

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.