我有两个系统
我一直在测试两个系统上的以下代码段,以尝试找出ubuntu系统上的错误原因。
import urllib.request
import http.server
import socketserver
PORT = 8000
def requestHandler(request, client_address,server):
# test to print to console when the handler is invoked.
print("Request = " + str(request) + " Client Address = " + str(client_address) + " Server = " + str(server))
def startWebServer():
Handler = requestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
def main():
startWebServer()
main()
在Mac上,这可以按预期工作,调用requestHandler并将信息打印到控制台。
但是,在ubuntu系统上,我收到以下错误。
Traceback (most recent call last):
File "sockettest.py", line 19, in <module>
main()
File "sockettest.py", line 17, in main
startWebServer()
File "sockettest.py", line 12, in startWebServer
with socketserver.TCPServer(("", PORT), Handler) as httpd:
AttributeError: __exit__
我怀疑我错误配置了ubuntu python安装。
你可以建议我做错了吗?答案 0 :(得分:5)
socketserver
服务器不支持用作上下文管理器。引用docs:
版本3.6中已更改:添加了对上下文管理器协议的支持。退出上下文管理器等同于调用server_close()。
将来,如果不同的Python版本的行为不同,您应该检查文档以查找记录的版本差异。