我正在使用Ubuntu。我想向总线发送垃圾邮件,并使用Wireshark查看数据包。我试图运行下面显示的Python代码,但引发了以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'can'
我的代码:
import time, can
bustype = 'socketcan'
channel = 'vcan0'
def producer(id):
# :param id: Spam the bus with messages including the data id.
bus = can.interface.Bus(channel=channel, bustype=bustype)
for i in range(10):
msg = can.Message(arbitration_id=0xc0ffee, data=[id, i, 0, 1, 3, 1, 4, 1], extended_id=False)
bus.send(msg)
# Issue #3: Need to keep running to ensure the writing threads stay alive.
time.sleep(1)
producer(10)
答案 0 :(得分:1)
每当您在Python中获得no module named '<module_name>' error
时,这意味着python找不到模块。可能是因为缺少模块。
您可以使用pip安装python模块。
如果您没有pip工具,则可以使用sudo apt install python-pip
在基于Debian的操作系统上进行安装。
在您的情况下,您需要python-can模块,该模块可以通过使用
进行安装 pip install python-can
答案 1 :(得分:1)
在Ubuntu 18.04及更高版本中,默认的Ubuntu存储库提供了python-can和python3-can。打开终端并输入:
sudo apt update
sudo apt install python3-can # for Python 3.x
或
sudo apt update
sudo apt install python python-can # for Python 2.x
要安装CANard(用于与控制器局域网(CAN)交互的库),必须使用pip。
pip3 install CANard # for Python 3.x
或
pip install CANard # for Python 2.x
答案 2 :(得分:0)
您需要install external third-party package python-can 您可以使用pip进行操作。请按照提供的链接中的说明进行操作