美文网首页
翻译:no module named http.server

翻译:no module named http.server

作者: 东东东东东东丶 | 来源:发表于2018-05-21 21:17 被阅读0次

    Stack overflow地址:python 2.7 - no module named http.server - Stack Overflow

    翻译:

    下面是我的Web服务器类:

    import http.server  

    import socketserver

    classWebHandler(http.server.BaseHTTPRequestHandler):

        def parse_POST(self):

            ctype, pdict = cgi.parse_header(self.headers['content-type'])

            ifctype == 'multipart/form-data':

                postvars = cgi.parse_multipart(self.rfile, pdict)

            elif ctype == 'application/x-www-form-urlencoded':

                length = int(self.headers['content-length'])

                postvars = urllib.parse.parse_qs(self.rfile.read(length),

                                                 keep_blank_values=1)

            else:

                postvars = {}

            returnpostvars

        def do_POST(self):

            postvars = self.parse_POST()

            print(postvars)

            # reply with JSON

            self.send_response(200)

            self.send_header("Content-type", "application/json")

            self.send_header("Access-Control-Allow-Origin","*");

            self.send_header("Access-Control-Expose-Headers: Access-Control-Allow-Origin");

            self.send_header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

            self.end_headers()

            json_response = json.dumps({'test': 42})

            self.wfile.write(bytes(json_response, "utf-8"))

    当我运行服务的时候我遇到了“name ‘http’ is not define”的错误,在我导入 http.server后我又遇到了"no module named http.server"的错误。



    Answer1:

    http.server只在python3中存在。在python2中,你需要使用 BaseHttpServer模块:

    from BaseHTTPServer import BaseHTTPRequestHandler

    应该会工作的很好。

    讨论:

    1.呀,我试了但是我遇到了“No module named http”

    2.这不管用对我来说,而且我在使用python 2.7,我该怎么处理这个问题

    3.呀,我的错。我之前没仔细看。我重新检查并更新了答案。http.server只在pyhton3,但是这里有Py2的模块你可以使用

    4.还有其他的解决方案对于pyhton2来说吗

    5.有,就像我在我的答案中说的,使用from BaseHTTPServer import BaseHTTPRequestHandler作为你的导入状态,然后让你的WebHandler类作为BaseHTTPRequestHandler的直接子类


    Answer2:

    在python v3版本之前,你需要运行http server像这样

    python -m SimpleHTTPServer 8069

    相关文章

      网友评论

          本文标题:翻译:no module named http.server

          本文链接:https://www.haomeiwen.com/subject/ejaqjftx.html