2010-07-20 81 views
2

我有一個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() 

回答

8

最明顯的問題是,當您正在導入dbus,它是沒有得到所有與它的方法。

在您的程序和朋友的程序中,請執行print dbus.__file__。這將顯示它正在使用的.pyc。如果它們不同,則不會導入正確的dbus模塊。

我在猜測你實際上是在本地目錄中導入一些名爲dbus.py的隨機文件。或者,如果您的腳本名稱是「dbus.py」,那麼您只需導入它自己,幸運的是python不會遞歸導入。在這種情況下,最簡單的解決方案是將有問題的文件重命名爲其他內容。

+3

假設情況如此(腳本命名爲dbus.py),請記住,由於這個原因,將腳本命名爲與您要導入的模塊相同的操作是不好的做法。 Python總是會嘗試首先從相對路徑導入,例如當前工作目錄。 – jathanism 2010-07-20 18:56:54

+1

OMG我已經在這個問題上掙扎了半個小時。謝謝你們:D – netom 2011-02-10 15:38:55