2016-04-22 73 views
1

晚上好,AttributeError的:“模块”对象有没有属性“的SMBus”

我一直在努力的SMBus通信到我的硬盘驱动器,并已能够通过所谓的readwriteeverything程序来读取值。现在,我想创建自己的程序来读取和写入python中的导入smbus的寄存器。所以,我决定立足我的代码从这个例子:

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上都遇到同样的问题。

如何让这个命令正常工作?

+0

的细节,你试过通过PIP安装呢? – Natecat

+0

是的,我尝试按照这个指南:https://pypi.python.org/pypi/smbus-cffi,仍然没有运气 –

回答

0

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

pip install smbus-cffi --upgrade

看看这里的包smbus-cffi 0.5.1 details

+0

这没有奏效,这是我运行该命令时的输出:'pip install smbus-cffi - 升级 要求已更新:/usr/local/lib/python2.7/dist-packages/smbus_cffi-0.5.1-py2.7-linux-x86_64.egg 中的smbus-cffi要求已更新:/usr/local/lib/python2.7/dist-packages/cffi-1.6.0-py2.7-linux-x86_64.egg中的cffi> = 1.1.0(来自smbus-cffi ) 要求已更新:/usr/local/lib/python2.7/dist-packages/pycparser-2.14-py2.7.egg中的pycparser(来自cffi> = 1.1.0-> smbus-cffi) 清理......“看起来一切都已经是最新的了。 –

+0

您是否熟悉virtualenv安装?用'virtualenv mytest'创建一个虚拟环境。然后运行'source ./mytest/bin/activate'。此时,您处于干净的虚拟环境中,可以重新运行pip命令。手指交叉,可能会解决任何阻止您的主要python命令。 – zedman9991

+0

对不起,延迟的答复,这似乎并没有伎俩。我在pypy上尝试过,并在虚拟环境中构建它之后直接通过终端。我正在运行Ubuntu 14.04.3的全新安装,如果它在这一点上很重要。 –

相关问题