Ich versuche mit Python 2.6 auf meinem Raspberry Pi, auf dem Debian läuft, auf eine serielle Schnittstelle zuzugreifen. Mein Skript heißt serial.py
versucht pySerial zu importieren:
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
ser.write("hello world!")
Aus irgendeinem Grund kann die serielle Verbindung mit diesem Fehler nicht hergestellt werden:
AttributeError: 'module' object has no attribute 'Serial'
Wenn ich versuche, den gleichen Code in den interaktiven Python Interpreter einzugeben, funktioniert er immer noch nicht.
Seltsamerweise funktionierte es vor ein paar Stunden.
Woran könnte das liegen? Ich habe eine Weile versucht, das Problem zu beheben, pySerial erneut zu installieren, meinen Code neu zu schreiben, die serielle Schnittstelle zu überprüfen usw.
Danke im Voraus!
Sie importieren das Modul, nicht die Klasse. Sie müssen also schreiben:
from serial import Serial
Sie müssen das serial
Modul korrekt installieren: pip install pyserial
.
Ich füge diese Lösung für Leute hinzu, die den gleichen Fehler machen wie ich.
In den meisten Fällen: Benennen Sie Ihre Projektdatei "serial.py" um und löschen Sie "serial.pyc", falls vorhanden. Dann können Sie einfach "serial importieren" ohne Attributfehler.
Problem tritt auf, wenn Sie "etwas" importieren, wenn Ihr python Dateiname "something.py" ist.
Ich habe versehentlich 'serial' (Sudo python -m pip install serial
) anstelle von 'pySerial' (Sudo python -m pip install pyserial
), die zum selben Fehler führen.
Wenn die zuvor genannten Lösungen für Sie nicht funktionierten, überprüfen Sie noch einmal, ob Sie die richtige Bibliothek installiert haben.
Sie haben das falsche Paket mit dem Namen ' serial ' installiert.
pip uninstall serial
Für python 2.x oder pip3 uninstall serial
Für python 3.x auspip install pyserial
Für python ausführen = 2.x oder pip3 install pyserial
Für python 3.x.Wenn Sie wie ich hilflos sind, versuchen Sie Folgendes:
Listen Sie alle Untermodule von "Serial" (oder einem Paket, mit dem Sie Probleme haben) mit der hier beschriebenen Methode auf: Listen Sie alle Module auf, die Teil eines python package
In meinem Fall lösten sich die Probleme nacheinander.
... sieht für mich wie ein Käfer aus ...
Dieses Problem tritt auf, wenn Ihr Projekt serial.py heißt und die importierte Bibliothek auch serial heißt. Ändern Sie den Namen und fertig.
Ja, dieses Thema ist ein bisschen alt, aber ich wollte die Lösung, die für mich funktionierte, für diejenigen teilen, die es sowieso brauchen könnten
Versuchen Sie, wie ALi sagte, Ihr Programm über das Terminal wie folgt zu finden:
Sudo python3
import serial
print(serial.__file__)
-> Copy
CTRL+D #(to get out of python)
Sudo python3
-> Einfügen /__init__.py
Wenn Sie __init__.py
Aktivieren, wird Ihrem Programm mitgeteilt, dass "ok, ich werde Serial from python3 verwenden". Mein Problem war, dass mein Python3-Programm Serial from python 2.7
Andere Lösung: Entfernen Sie andere python Versionen
Cao
Anstrengen
Dieser Fehler kann auch auftreten, wenn Sie zirkuläre Abhängigkeiten haben. Überprüfen Sie Ihre Importe und stellen Sie sicher, dass Sie keine Zyklen haben.