Я пишу простой скрипт на python для чтения данных с шины CAN. Я использовал библиотеку python_can для python 2.7. Он содержит класс CANopenNode и внутри метода __init_, который я пишу:
self.bus = can.interface.Bus(channel = 'can0', bustype = 'socketcan_native')
когда я запускаю код, он сообщает об ошибке примерно так:
File "/home/jxu/.local/lib/python2.7/site-packages/can/interface.py", line 87, in __new__
return cls(channel, **kwargs)
File "/home/jxu/.local/lib/python2.7/site-packages/can/interfaces/socketcan/socketcan_native.py", line 416, in __init__
self.socket = create_socket(CAN_RAW)
File "/home/jxu/.local/lib/python2.7/site-packages/can/interfaces/socketcan/socketcan_native.py", line 305, in create_socket
if can_protocol is None or can_protocol == socket.CAN_RAW:
AttributeError: 'module' object has no attribute 'CAN_RAW'
Относительные строки кода в create_socket (внутри библиотеки) выглядят так:
if can_protocol is None or can_protocol == socket.CAN_RAW:
can_protocol = socket.CAN_RAW
socket_type = socket.SOCK_RAW
elif can_protocol == socket.CAN_BCM:
can_protocol = socket.CAN_BCM
socket_type = socket.SOCK_DGRAM
sock = socket.socket(socket.PF_CAN, socket_type, can_protocol)
Файлы библиотеки, кажется, не ошибаются:
>>> import socket
>>> print socket.__file__
/usr/lib/python2.7/socket.pyc
Может кто-нибудь объяснить, что здесь означает CAN_RAW и почему эта ошибка, спасибо!