Ответ 1
Вы импортируете модуль, а не класс. Итак, вы должны написать:
from serial import serial
Я пытаюсь получить доступ к последовательному порту с Python 2.6 на моем малине Pi, работающем под Debian.
Мой script с именем serial.py
пытается импортировать pySerial:
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
ser.write("hello world!")
По какой-то причине он отказывается устанавливать последовательное соединение с этой ошибкой:
AttributeError: 'module' object has no attribute 'Serial'
Когда я пытаюсь ввести один и тот же код в интерактивном интерпретаторе Python, он все равно не работает.
Как ни странно, он работал примерно пару часов назад.
В чем может быть проблема? Я попытался исправить это некоторое время, снова установив pySerial, переписав мой код, дважды проверив последовательный порт и т.д.
Спасибо заранее!
Вы импортируете модуль, а не класс. Итак, вы должны написать:
from serial import serial
Я добавляю это решение для людей, которые совершают ту же ошибку, что и я.
В большинстве случаев: переименуйте файл проекта "serial.py" и удалите serial.pyc, если он существует, тогда вы можете выполнить простой "импортный серийный номер" без ошибки атрибута.
Проблема возникает, когда вы импортируете "что-то", когда ваше имя файла python "something.py".
Я случайно установил "serial" (sudo python -m pip install serial
) вместо "pySerial" (sudo python -m pip install pyserial
), что приводит к той же ошибке.
Если ранее упомянутые решения не сработали для вас, дважды проверьте, установлена ли ваша библиотека.
Если вы беспомощны, как я, попробуйте следующее:
Список всех субмодулей "Serial" (или любого другого пакета, с которым вы столкнулись) с помощью метода, описанного здесь: Список всех модулей, входящих в пакет python
В моем случае проблемы решаются один за другим.
... выглядит как ошибка для меня...
Эта ошибка может также произойти, если у вас есть круговые зависимости. Проверьте свой импорт и убедитесь, что у вас нет циклов.
Эта проблема связана с тем, что ваш proyect называется serial.py, а импортированная библиотека также является серийным номером, измените имя и все.