Python - asyncore.dispatcher模块错误

Gir*_*har 2 python

我开始学习这个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)

aar*_*ing 6

您的问题是您为文件命名asyncore.py.它隐藏asyncore.py在python标准库中,因此文件导入自身而不是真实的文件.您希望重命名该文件的副本,并asyncore.pyc在同一目录中删除(如果存在).然后,当您运行文件时,您将从asyncore.py标准库导入.

当Python运行该行时import asyncore,python会在目录中sys.path查找名为的文件asyncore.py.正在执行的主文件的目录始终是其中的第一个条目.所以Python找到你的文件并尝试导入它.作为一般规则,如果要使用该模块,则不应该从标准库中为文件指定与模块相同的名称.