【问题标题】:python dbus problempython dbus问题
【发布时间】:2010-07-20 18:35:13
【问题描述】:

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

【问题讨论】:

    标签: python dbus


    【解决方案1】:

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

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

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

    【讨论】:

    • 假设是这种情况(名为 dbus.py 的脚本),请记住,由于这个原因,将脚本命名为与要从中导入的模块相同的名称是不好的做法。 Python 总是会首先尝试从相对路径导入,例如当前工作目录。
    • 天哪,我为此挣扎了半个小时。谢谢你们:D
    猜你喜欢
    • 2010-12-12
    • 2010-12-30
    • 2012-12-08
    • 2012-01-05
    • 2013-11-26
    • 2020-06-07
    • 1970-01-01
    • 2021-06-02
    • 2013-01-30
    相关资源
    最近更新 更多