运行以下代码时出现错误:
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 发送虚拟消息。我该如何修复这个错误?
我今天在使用 python-can 3.3.3 时遇到了这个问题,并通过更新到不久前发布的 3.3.4 解决了它。
由于该软件包仍在开发中,看起来他们不小心发布了 3.3.3 的损坏版本。
我犯了一个愚蠢的错误,有一个文件名为:
can.py
在同一个文件夹中!我显然导入了错误的文件,因此重命名该文件解决了我的问题。
如果在 .py 打包为 .exe 后 pyinstaller 4.0 发生该问题,请在代码中添加以下行;
import can.interfaces.vector
我不小心做了一个
pip install can
而不是pip install python-can
,这也导致了我这个错误。删除 can
软件包并使用 python-can
重试。
我将 python-can 库降级到早期版本并且它有效 pip install python-can==X.Y.Z 这是我使用的命令,其中 X Y 和 Z 是我们要下载的版本