学习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()
答案 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)
答案 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()
您可以点击我上面提供的链接,以从文档中了解更多信息。