2013-10-18 308 views
1

这个学期我正在做一个python类,我想用网页的形式向我的程序添加图形用户界面。部分我不能为学习Tkinter而困扰,部分我只是在挑战自己,部分我只是喜欢用HTML/JS编写接口。执行python脚本的python服务器

我知道关于使用SimpleHTTPServer创建HTTP服务器的基础知识,但是我需要的是一种让我的网页能够将ajax命令发送到服务器上的python脚本的方式,然后它将执行服务器端,然后接收脚本输出。有点像Sage如何做。

如何为SimpleHTTPServer创建一个扩展,然后可以使用它来提供python脚本的输出?我需要一个非常通用的解决方案,以便在编写任何python脚本时,我可以轻松地将其包装在某种界面中,将其放入服务器的文件夹中,而无需执行其他任何操作,只需使用AJAX调用它即可服务器将处理剩下的事情。

我目前的想法是有一个ServerSideScript类,我的脚本可以扩展,使用一个称为output的函数。我拥有的每个脚本都应该包含一个名为Script的ServerSideScript的子类。当服务器被要求以服务,例如,foo.py,它注意到了延伸和不一样的东西:

if self.path[-3:]: == ".py": 
    return getScriptOutput(self.path) 

... 

def getScriptOutput(self, path): 
    from path import Script # obviously not going to work, since path is a string 
    return Script().output() 

这不能为工作原因在评论中指出,我知道诸如import_module函数之类的东西,但是导入看起来像是一种难看的方式,以此开始。

建议是什么?

+1

你见过[CGIHTTPServer](http://docs.python.org/2/library/cgihttpserver.html)吗? –

+0

@MartijnPieters这是默认的,对吧?我无法在学校电脑上安装额外的模块。 –

+0

为什么不使用合适的网络服务器和像Flask这样的微型框架? –

回答

3

Python随机附送电池; CGIHTTPServer将运行使用CGI标准Python脚本:

CGIHTTPServer模块定义了一个请求处理程序类,接口兼容BaseHTTPServer.BaseHTTPRequestHandler和从SimpleHTTPServer.SimpleHTTPRequestHandler继承的行为,但也可以运行CGI脚本。

,只要他们有一个.py.pyw扩展,并且是可执行程序,它会运行Python脚本;映射到文件的其他路径将被视为常规文件,并将其内容用于替代。

您可能感兴趣的cgicgitb模块为好,以帮助缓解CGI脚本开发。

+0

[CGIHTTPServer tutorial](http://pointlessprogramming.wordpress.com/2011/02/13/python-cgi-tutorial-1/)。 –

0

你可能想看看IPython notebooks - 它本质上给你一个基于Web的交互式Python外壳,甚至与matplotlib等,您可以节省Python脚本为笔记本电脑集成,添加文字插图中陈述等

enter image description here

如果您想共享输出而不是交互,您也可以使用nbviewer

+0

我这样做是为了编码它的乐趣,而不是为了实际价值。但是,谢谢。 –