【问题标题】:AttributeError: 'module' object has no attribute 'SMBus'AttributeError:“模块”对象没有属性“SMBus”
【发布时间】:2016-08-16 14:36:43
【问题描述】:

晚上好,

我一直致力于与我的硬盘驱动器进行 SMBus 通信,并且能够通过名为 readwriteeverything 的程序读取值。现在,我想创建自己的程序来在导入 smbus 的 python 中读取和写入寄存器。因此,我决定将我的代码基于此示例:

from smbus import SMBus

bus = SMBus(1)    # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1)

DEVICE_ADDRESS = 0x15      #7 bit address (will be left shifted to add the read write bit)
DEVICE_REG_MODE1 = 0x00
bus.write_data(DEVICE_ADDRESS, DEVICE_REG_MODE1)
bus.read_data(DEVICE_ADDRESS)

但是,当我尝试运行单行代码时:

from smbus import SMBus

我明白了:

ImportError: cannot import name SMBus

我已经尝试过 python2、python3,安装了许多包,例如 python3-smbus,甚至尝试构建包并安装它(尽管这是基于 Raspberry Pi 指南,并且是使用桌面的。)

我在 windows 和 linux 上都试过了,都遇到了同样的问题。

我怎样才能让这个命令正常工作?

【问题讨论】:

标签: python linux windows import i2c


【解决方案1】:

您需要安装 SMBus 模块。试试:

pip install smbus-cffi --upgrade

查看这里了解包裹的详细信息smbus-cffi 0.5.1 details

【讨论】:

  • 这不起作用,这是我运行该命令时的输出:pip install smbus-cffi --upgrade Requirement already up-to-date: smbus-cffi in /usr/local/lib/python2.7/dist-packages/smbus_cffi-0.5.1-py2.7-linux-x86_64.egg Requirement already up-to-date: cffi>=1.1.0 in /usr/local/lib/python2.7/dist-packages/cffi-1.6.0-py2.7-linux-x86_64.egg (from smbus-cffi) Requirement already up-to-date: pycparser in /usr/local/lib/python2.7/dist-packages/pycparser-2.14-py2.7.egg (from cffi>=1.1.0->smbus-cffi) Cleaning up... 看来一切都已经是最新的了。
  • 您熟悉 virtualenv 安装吗?使用“virtualenv mytest”创建一个虚拟环境。然后运行'source ./mytest/bin/activate'。此时,您处于一个干净的虚拟环境中,可以重新运行 pip 命令。手指交叉可能会解决阻止您的主要 python 命令的任何问题。
  • 抱歉延迟响应,这似乎没有奏效。我在pypy中尝试过,在虚拟环境中构建后直接通过终端尝试。如果此时重要的话,我正在运行全新安装的 Ubuntu 14.04.3。
猜你喜欢
  • 2010-11-18
  • 2018-08-28
相关资源
最近更新 更多