python dbus问题

2 投票
1 回答
4678 浏览
提问于 2025-04-16 01:35

我在使用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 不会递归导入。解决这个问题最简单的方法就是把那个文件改个名字。

撰写回答