wake-up-neo.com

Python AttributeError: 'module' Objekt hat kein Attribut 'Serial'

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!

107
hao_maike

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.

84
VGO

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.

166
sql

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.

109
Kevin

Sie haben das falsche Paket mit dem Namen ' serial ' installiert.

  • Führen Sie pip uninstall serial Für python 2.x oder pip3 uninstall serial Für python 3.x aus
  • Installieren Sie dann pyserial , falls dies nicht bereits geschehen ist, indem Sie pip install pyserial Für python ausführen = 2.x oder pip3 install pyserial Für python 3.x.
17
FutureJJ

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 ...

3
Nearoo

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.

2
davidleosam

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

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

Anstrengen

1
Benjamin

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.

1