Python AttributeError: объект' module 'не имеет атрибута 'Serial'


Я пытаюсь получить доступ к последовательному порту с Python 2.6 на моем Raspberry Pi под управлением Debian. Мой скрипт с именем serial.py пытается импортировать pySerial:

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

по какой-то причине он отказывается установить последовательное соединение с этой ошибкой:

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

когда я пытаюсь ввести тот же код в интерактивном интерпретаторе Python, он все еще не работает.

странно, он работал около пары часов назад.

в чем может быть проблема? Я попытался исправить это на некоторое время, снова установив pySerial, переписав мой код, дважды проверив последовательный порт и т. д.

спасибо заранее!

8 89

8 ответов:

вы импортируете модуль, а не класс. Итак, вы должны написать: from serial import serial

Я добавляю это решение для людей, которые делают ту же ошибку, что и я.

в большинстве случаев: переименовать файл проекта 'serial.py-и удалить серийный номер.pyc если существует, то вы можете сделать простой "импорт последовательный" без ошибки атрибута.

проблема возникает при импорте "что-то", когда ваше имя файла python 'something.py'.

я случайно установил 'serial' (sudo python -m pip install serial) вместо 'pySerial' (sudo python -m pip install pyserial), что приводит к той же ошибке.

Если ранее упомянутые решения не работали для вас, дважды проверьте, установлена ли правильная библиотека.

установки неверный пакет с именем'серийный'.

  • выполнить pip uninstall serial для python 2.x или pip3 uninstall serial для python 3.x
  • установить pyserial если еще не установлен работает pip install pyserial для python 2.x илиpip3 install pyserial для python 3.x.

Если вы беспомощны, как я, попробовать это:

перечислите все подмодули "последовательного" (или любого другого пакета, с которым у вас возникли проблемы) с помощью метода, описанного здесь:Список всех модулей, которые являются частью пакета python

в моем случае, проблемы решаются одна за другой.

...похоже на жука для меня...

эта ошибка также может произойти, если у вас есть циклические зависимости. Проверьте импорт и убедитесь, что у вас нет никаких циклов.

эта проблема является beacouse ваш проект называется serial.py и импортированная библиотека также является серийным именем, измените имя и все.

Да эта тема немного старая, но я хотел бы поделиться решением, которое работает для меня для тех, кто может понадобиться в любом случае

как сказал Али, попробуйте найти свою программу, используя следующее из терминала:

 sudo python3
 import serial

print(serial.__file__)--> копия

CTRL+D #(to get out of python)

sudo python3-->вставить/__init__.py

активация __init__.py скажет вашей программе "ОК я собираюсь использовать серийный от python3". Моя проблема была в том, что мой программа python3 использовала Serial от python 2.7

другое решение: удалите другие версии python

Cao

источники : https://raspberrypi.stackexchange.com/questions/74742/python-serial-serial-module-not-found-error/85930#85930

Tryhard