172 votes

Python AttributeError : l'objet 'module' n'a pas d'attribut 'Serial'.

J'essaie d'accéder à un port série avec Python 2.6 sur mon Raspberry Pi sous Debian. Mon script nommé serial.py tente d'importer pySerial :

import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
ser.write("hello world!")

Pour une raison quelconque, il refuse d'établir la connexion série avec cette erreur :

AttributeError: 'module' object has no attribute 'Serial'

Lorsque j'essaie de taper le même code dans l'interpréteur interactif Python, cela ne fonctionne toujours pas.

Étrangement, cela fonctionnait il y a environ deux heures.

Quel est le problème ? J'ai essayé de résoudre ce problème pendant un certain temps, en installant pySerial à nouveau, en réécrivant mon code, en vérifiant à nouveau le port série, etc.

2voto

Nearoo Points 1067

Si vous êtes impuissant comme moi, essayez ceci :

Listez tous les sous-modules de "Serial" (ou du paquet qui vous pose problème) en suivant la méthode décrite ici : Liste de tous les modules qui font partie d'un paquetage python

Dans mon cas, les problèmes se sont résolus les uns après les autres.

...me semble être un insecte...

1voto

Cette erreur peut également se produire si vous avez des dépendances circulaires. Vérifiez vos importations et assurez-vous que vous n'avez pas de cycles.

1voto

Benjamin Points 62

Oui, ce sujet est un peu ancien mais je voulais partager la solution qui a fonctionné pour moi avec ceux qui pourraient en avoir besoin.

Comme Ali l'a dit, essayez de localiser votre programme en utilisant ce qui suit à partir du terminal :

 sudo python3
 import serial

print(serial.__file__) --> Copier

CTRL+D #(to get out of python)

sudo python3 -->coller /__init__.py

La course à pied __init__.py dira à votre programme "ok je vais utiliser Serial de python3". Mon problème était que mon programme python3 utilisait Serial de python 2.7

Autre solution : supprimer les autres versions de python

Cao

Sources : https://raspberrypi.stackexchange.com/questions/74742/python-serial-serial-module-not-found-error/85930#85930

Tryhard

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X