使用 python-can 时出现属性错误(模块“can”没有属性“interface”)

问题描述 投票:0回答:5

运行以下代码时出现错误:

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-bus
5个回答
2
投票

我今天在使用 python-can 3.3.3 时遇到了这个问题,并通过更新到不久前发布的 3.3.4 解决了它。

由于该软件包仍在开发中,看起来他们不小心发布了 3.3.3 的损坏版本。


2
投票

我犯了一个愚蠢的错误,有一个文件名为:

can.py

在同一个文件夹中!我显然导入了错误的文件,因此重命名该文件解决了我的问题。


0
投票

如果在 .py 打包为 .exe 后 pyinstaller 4.0 发生该问题,请在代码中添加以下行;

import can.interfaces.vector

0
投票

我不小心做了一个

pip install can
而不是
pip install python-can
,这也导致了我这个错误。删除
can
软件包并使用
python-can
重试。


0
投票

我将 python-can 库降级到早期版本并且它有效 pip install python-can==X.Y.Z 这是我使用的命令,其中 X Y 和 Z 是我们要下载的版本

© www.soinside.com 2019 - 2024. All rights reserved.