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 saisir le même code dans l'interpréteur interactif Python, il ne fonctionne toujours pas.
Étrangement, cela fonctionnait il y a environ deux heures.
Quel pourrait être le problème? J'ai essayé de résoudre ce problème depuis un moment, en installant à nouveau pySerial, en réécrivant mon code, en revérifiant le port série, etc.
Merci d'avance!
Vous importez le module, pas la classe. Donc, vous devez écrire:
from serial import Serial
Vous devez installer le module serial
correctement: pip install pyserial
.
J'ajoute cette solution aux personnes qui commettent la même erreur que moi.
Dans la plupart des cas: renommez votre fichier de projet 'serial.py' et supprimez serial.pyc s'il existe, vous pouvez alors effectuer une 'importation série' simple sans erreur d'attribut.
Un problème survient lorsque vous importez "quelque chose" lorsque votre nom de fichier python est "quelque chose.py".
J'ai accidentellement installé 'série' (Sudo python -m pip install serial
) au lieu de 'pySerial' (Sudo python -m pip install pyserial
), ce qui a entraîné la même erreur.
Si les solutions mentionnées précédemment ne fonctionnaient pas pour vous, vérifiez si vous avez installé la bonne bibliothèque.
Vous avez installé le paquet incorrect nommé ' serial '.
pip uninstall serial
pour python 2.x ou pip3 uninstall serial
pour python 3.xpip install pyserial
pour python 2.x orpip3 install pyserial
pour python 3.x.Si vous êtes comme moi impuissant, essayez ceci:
Répertoriez tous les sous-modules de "Série" (ou le paquet avec lequel vous rencontrez des problèmes) avec la méthode décrite ici: Répertoriez tous les modules qui font partie d'un paquet python
Dans mon cas, les problèmes résolus les uns après les autres.
... ressemble à un bug pour moi ...
Ce problème est dû au fait que votre projet s'appelle serial.py et que la bibliothèque importée porte le nom serial, changez le nom et c’est tout.
Oui, ce sujet est un peu vieux mais je voulais partager la solution qui a fonctionné pour moi pour ceux qui pourraient en avoir besoin quand même
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
Activer __init__.py
dira à votre programme "ok je vais utiliser Serial from python3". Mon problème était que mon programme python3 utilisait Serial from python 2.7
Autre solution: supprimer les autres versions de python
Cao
Faire un effort
Cette erreur peut également se produire si vous avez des dépendances circulaires. Vérifiez vos importations et assurez-vous de ne pas avoir de cycle.