我开始学习这个asyncore.dispatcher模块,当我运行第一个示例程序时,它给出了如下错误:
Python 2.6版
安装了asyncore模块,里面还有调度程序类.可能是什么问题!
错误:
AttributeError: 'module' object has no attribute 'dispatcher'
Run Code Online (Sandbox Code Playgroud)
示例代码:
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()
Run Code Online (Sandbox Code Playgroud)
您的问题是您为文件命名asyncore.py.它隐藏asyncore.py在python标准库中,因此文件导入自身而不是真实的文件.您希望重命名该文件的副本,并asyncore.pyc在同一目录中删除(如果存在).然后,当您运行文件时,您将从asyncore.py标准库导入.
当Python运行该行时import asyncore,python会在目录中sys.path查找名为的文件asyncore.py.正在执行的主文件的目录始终是其中的第一个条目.所以Python找到你的文件并尝试导入它.作为一般规则,如果要使用该模块,则不应该从标准库中为文件指定与模块相同的名称.
| 归档时间: |
|
| 查看次数: |
1343 次 |
| 最近记录: |