python dbus问题
问题描述:
我有一个dbus和python的问题。从命令行运行python,告诉它import dbus
,然后systembus = dbus.SystemBus()
不会导致错误,也不会运行由也使用完全相同的代码的朋友编写的程序。然而,运行一个程序,我想写的时候,我得到这个错误:python dbus问题
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()
答
最明显的问题是,当您正在导入dbus
,它是没有得到所有与它的方法。
在您的程序和朋友的程序中,请执行print dbus.__file__
。这将显示它正在使用的.pyc。如果它们不同,则不会导入正确的dbus模块。
我在猜测你实际上是在本地目录中导入一些名为dbus.py
的随机文件。或者,如果您的脚本名称是“dbus.py”,那么您只需导入它自己,幸运的是python不会递归导入。在这种情况下,最简单的解决方案是将有问题的文件重命名为其他内容。
假设情况如此(脚本命名为dbus.py),请记住,由于这个原因,将脚本命名为与您要导入的模块相同的操作是不好的做法。 Python总是会尝试首先从相对路径导入,例如当前工作目录。 – jathanism 2010-07-20 18:56:54
OMG我已经在这个问题上挣扎了半个小时。谢谢你们:D – netom 2011-02-10 15:38:55