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 ответов:
Я добавляю это решение для людей, которые делают ту же ошибку, что и я.
в большинстве случаев: переименовать файл проекта '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
Tryhard