python dbus问题
我在使用dbus和python时遇到了问题。当我在命令行中运行python,输入import dbus
,然后systembus = dbus.SystemBus()
时,没有任何错误。而且我朋友写的一个程序也用的是完全相同的代码,运行时也没有问题。但是,当我尝试运行我自己写的程序时,却出现了这个错误:
Traceback (most recent call last):
File "dbtest.py", line 26, in <module>
a = getDevs()
File "dbtest.py", line 7, in getDevs
bus = dbus.SystemBus()
AttributeError: 'module' object has no attribute 'SystemBus'
有没有人知道我哪里出错了?我觉得我还不太明白这个错误的意思。到目前为止,我的代码是:
#!/usr/bin/env python
import dbus
def getDevs():
bus = dbus.SystemBus()
if __name__ == "__main__":
a = getDevs()
1 个回答
10
明显的问题是,当你在导入 dbus
时,它没有把所有的方法都带过来。
在你和你朋友的程序里,运行 print dbus.__file__
。这样可以显示它使用的是哪个 .pyc 文件。如果你们看到的文件不同,那说明你们没有导入正确的 dbus 模块。
我猜你可能是在导入你本地目录下某个随便的文件,叫做 dbus.py
。或者,如果你的脚本名字是 "dbus.py",那你就是在导入自己,幸运的是,Python 不会递归导入。解决这个问题最简单的方法就是把那个文件改个名字。