如何使用python webserver在浏览器中运行.py文件

时间:2011-10-02 03:32:10

标签: python

我使用这个简单的脚本运行了一个python webserver -

    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文件但是当我输入时它不会在浏览器中运行.py文件 -    http://localhost:8000/myfile.py

它只显示我的python代码,因为它是我在文件中写的,它不执行代码请帮我在浏览器中运行我的python文件(.py)只使用这个网络服务器,我不想使用任何框架或其他网络服务器。

有没有办法在这个python服务器中创建虚拟主机,如apache。 如果可能的话,请告诉我如何执行此操作以及是否需要配置任何配置文件。

...感谢名单

2 个答案:

答案 0 :(得分:2)

问题是SimpleHTTPRequestHandler仅提供目录中的文件,而不执行它们。如果希望它执行代码,则必须覆盖do_GET方法。

答案 1 :(得分:2)

您可能想要查看CGIHTTPRequestHandler。我在基于linux的系统上非常简单地使用它,CGI标准是一个文件可执行并且具有正确的shabang。我不确定这是否适用于Windows(如果这是一个相关的问题)

使用您的示例代码,您只需将RH更改为

import CGIHTTPServer.CGIHTTPRequestHandler as RH

或者,第三方库Twisted有一个.rpy文件的概念,这些文件大多是普通的Python逻辑。 http://twistedmatrix.com/trac/wiki/TwistedWeb

注意:     刚刚验证了CGIHTTPRequestHandler的工作原理。注意事项是所有python文件必须位于cgi-bin子目录中,它们必须具有有效的shabang,必须是可执行的,并且必须提供有效的CGI输出。

个人在90年代写过C ++ CGI脚本,CGI路线似乎是疯狂的路径......所以看看Twisted,CherryPy或Django(这三个主要涵盖了Python网络的可能性)