2

我对 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()
4

1 回答 1

10

明显的问题是,当您导入时dbus,它并没有获得所有的方法。

在您的程序和您朋友的程序中,执行print dbus.__file__. 这将显示它正在使用的 .pyc。如果它们不同,则说明您没有导入正确的 dbus 模块。

我猜你实际上是在导入一些dbus.py在本地目录中调用的随机文件。或者,如果您的脚本名称是“dbus.py”,那么您只是在导入自身,幸运的是 python 不会递归导入。在这种情况下,最简单的解决方案是将有问题的文件重命名为其他文件。

于 2010-07-20T18:46:52.400 回答