如何在浏览器中通过Python Web服务器运行.py文件
我用这个简单的脚本启动了一个Python网页服务器 -
from http.server import SimpleHTTPRequestHandler as RH
from socketserver import TCPServer
ServerName='localhost'
OnPort=8000
print ("Server is running at Port 8000")
TCPServer((ServerName, OnPort), RH).serve_forever()
这个服务器运行得很好,可以打开我的index.html文件。但是当我在浏览器里输入这个地址: http://localhost:8000/myfile.py时,它并没有执行我的.py文件。
浏览器只显示了我在文件里写的Python代码,而没有执行这些代码。请帮我在这个网页服务器上运行我的Python文件(.py),我不想使用任何框架或其他网页服务器。
有没有办法在这个Python服务器上像Apache那样创建一个虚拟主机?如果可以的话,请告诉我怎么做,是否需要配置任何配置文件。
谢谢...
2 个回答
问题在于,SimpleHTTPRequestHandler
只是用来提供目录里的文件,它并不会执行这些文件。如果你想让它执行代码,就必须重写 do_GET
这个方法。
你可能想看看CGIHTTPRequestHandler。我在一个基于Linux的系统上简单试过一下,CGI的要求是文件必须可执行,并且要有正确的开头标记(shabang)。不过我不确定在Windows上是否也能用(如果这还算是个问题的话)。
在你的示例代码中,你只需要把RH改成
import CGIHTTPServer.CGIHTTPRequestHandler as RH
另外,第三方库Twisted有一种.rpy文件的概念,里面主要是普通的Python逻辑。你可以查看http://twistedmatrix.com/trac/wiki/TwistedWeb。
注意: 我刚刚确认CGIHTTPRequestHandler是可以工作的。不过有几点需要注意:所有的Python文件必须放在cgi-bin这个子目录下,必须有有效的开头标记,必须是可执行的,并且必须提供有效的CGI输出。
我个人在90年代写过C++的CGI脚本,觉得走CGI这条路简直是自找麻烦……所以建议你看看Twisted、CherryPy或者Django(这三者基本上涵盖了Python在网页开发方面的各种可能性)。