#python #can-bus
#python #can-bus
Вопрос:
Я получаю сообщение об ошибке при запуске следующего кода:
import can #importing CAN module
import time
bus1 = can.interface.Bus(bustype='vector', channel=0, bitrate=500000,
app_name='python-can')
bus2 = can.interface.Bus(bustype='vector', channel=1, bitrate=500000,
app_name='python-can')
msg1 = can.Message(arbitration_id = 0xa1,
data = [1, 2, 3, 4, 5, 6, 7, 8],
extended_id = False)
msg2 = can.Message(arbitration_id = 0xa3,
data = [8, 7, 6, 5, 4, 3, 2, 1],
extended_id = False)
bus1.send(msg1)
time.sleep(1.0)
bus2.send(msg2)
bus1.shutdown()
bus2.shutdown()
Я могу импортировать модуль CAN, но затем я получаю эту ошибку:
AttributeError: module 'can' has no attribute 'interface'
Я пытаюсь отправить фиктивные сообщения в виртуальный CAN. Как я могу исправить эту ошибку?
Комментарии:
1. Что произойдет, если вы удалите
.interface
? Простоbus1 = can.Bus(...)
?2. Он выдает ошибку атрибута ошибки: модуль ‘can’ не имеет атрибута ‘Bus’ @JosSeldenthuis
Ответ №1:
Сегодня у меня возникла эта проблема при использовании python-can 3.3.3, и я решил ее, обновив до версии 3.3.4, которая была выпущена не так давно.
Поскольку над пакетом все еще ведется работа, похоже, что они случайно выпустили сломанную версию с 3.3.3.
Ответ №2:
Я допустил глупую ошибку и вызвал файл:
can.py
в той же папке! Очевидно, я импортировал неправильный файл, поэтому переименование этого файла устранило мою проблему.
Ответ №3:
В случае, если эта проблема возникает с pyinstaller 4.0 после того, как файл .py упакован как .exe, добавьте в код строку ниже;
import can.interfaces.vector