2011-01-26 80 views
2

我開始學習這個asyncore.dispatcher模塊,當我運行第一個示例程序時,它給出了下面的錯誤。asyncore.dispatcher python模塊錯誤

Python版本2.6

asyncore模塊安裝也有其內部調度類。可能是什麼問題!

錯誤:

AttributeError: 'module' object has no attribute 'dispatcher' 

示例代碼:

import asyncore, socket 

class HTTPClient(asyncore.dispatcher): 

    def __init__(self, host, path): 
     asyncore.dispatcher.__init__(self) 
     self.create_socket(socket.AF_INET, socket.SOCK_STREAM) 
     self.connect((host, 80)) 
     self.buffer = 'GET %s HTTP/1.0\r\n\r\n' % path 

    def handle_connect(self): 
     pass 

    def handle_close(self): 
     self.close() 

    def handle_read(self): 
     print self.recv(8192) 

    def writable(self): 
     return (len(self.buffer) > 0) 

    def handle_write(self): 
     sent = self.send(self.buffer) 
     self.buffer = self.buffer[sent:] 

client = HTTPClient('www.python.org', '/') 
asyncore.loop() 
+0

錯誤發生在哪條線上?我們可以得到完整的追溯? – aaronasterling 2011-01-26 05:50:00

回答

6

你的問題是,你命名你的文件asyncore.py。它在python標準庫中隱藏asyncore.py,所以文件導入自己而不是真正的。您想要重命名您的文件副本,並在同一個目錄中刪除asyncore.pyc(如果存在)。然後當你運行你的文件時,你將從標準庫導入asyncore.py

當Python運行行import asyncore時,python通過sys.path中的目錄查找名爲asyncore.py的文件。正在執行的主文件的目錄始終是其中的第一個條目。所以Python找到你的文件並嘗試導入它。作爲一般規則,如果您想使用該模塊,則絕對不應該爲您的文件提供與標準庫中的模塊相同的名稱。