importError问题:没有名为BaseHTTPServer的模块

时间:2016-05-26 17:33:44

标签: python-2.7 webserver vagrant

学习Python 2.7并尝试在Vagrant上运行它。

采取的步骤: 流浪汉 流浪汉ssh 运行命令python webserver.py

运行此命令时出现问题,它发出一个ImportError:没有名为BaseHTTPServer的模块。这个问题与pg_config.sh有关吗?提前感谢您帮助我理解。

我已经检查了我的python 2.7目录。 BaseHTTPServer.py似乎就在那里。

from BaseHTTPServer import BaseHTTPRequestHandler, BaseHTTPServer



class WebServerHandler(BaseHTTPRequestHandler):

def do_Get(self):
    if self.path.endswith("/hello"):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_header()
        message = ""
        message += "<html><body>Hello!</body></html>"
        self.wfile.write(message)
        print message
        return
    else:
        self.send_error(404,'File Not Found: %s' % self.path)


def main():
try:
    port = 8080
    server = HTTPServer(('', port), WebServerHandler)
    print "Web Server running on port %s" % port
    server.serveforever()
except KeyboardInterrupt:
    print " ^C entered, stopping web server...."
    server.socket.close()

if _name_ == '__main__':
main()

4 个答案:

答案 0 :(得分:2)

您确定从命令行运行/测试的python与您的脚本运行的python是否相同?

即。 BaseHTTPServer可能存在于一个安装中,但不存在于另一个安装中。

例如,在我的机器上:

$ which python2.7
/usr/bin/python2.7

您的“python”(在您指定的命令行中)是否与“python2.7”相同?

$ python
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import BaseHTTPServer
>>> BaseHTTPServer
<module 'BaseHTTPServer' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.pyc'>

尝试一个确实存在的模块,以确保路径符合您的期望。

答案 1 :(得分:1)

在v3之前的python中,您需要将http服务器作为

运行
python -m SimpleHTTPServer 8069

答案 2 :(得分:0)

如果您使用的是pycharm,请将解释器从最新版本更改为Python 2.7。 如果没有项目解释器,则还可以通过指定python 2.7安装路径来添加一个。

enter image description here

答案 3 :(得分:0)

您可以考虑切换到python3.x。这是Python 3.7.2中代码的更新版本。请注意,下面的代码将python3 link

中的BaseHTTPServer模块更改为http.server

from http.server import BaseHTTPRequestHandler, HTTPServer

class WebServerHandler(BaseHTTPRequestHandler):

def do_GET(self):
    if self.path.endswith("/hello"):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        message = ""
        message += "<html><body>Hello!</body></html>"
        self.wfile.write(message)
        print (message)
        return
    else:
        self.send_error(404, 'File Not Found: %s' % self.path)

def main(): try: port = 8080 server = HTTPServer(('', port), WebServerHandler) print ("Web Server running on port %s" % port) server.serve_forever() except KeyboardInterrupt: print (" ^C entered, stopping web server....") server.socket.close()

if __name__ == '__main__': main()

您可以点击我上面提供的链接,以从文档中了解更多信息。