我遇到了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()
答案 0 :(得分:8)
显而易见的问题是,当您导入dbus
时,它没有获得所有方法。
在您的计划和您的朋友中,执行print dbus.__file__
。这将显示它正在使用的.pyc。如果它们不同,则不会导入正确的dbus模块。
我猜你实际上是在本地目录中导入了一个名为dbus.py
的随机文件。或者,如果您的脚本名称是“dbus.py”,那么您只是导入自己,幸运的是python不会递归导入。在这种情况下,最简单的解决方案是将有问题的文件重命名为其他文件。