从网络运行Python脚本

10 投票
1 回答
19159 浏览
提问于 2025-04-17 16:01

我在这个问题上已经纠结了快一年了。虽然我总能找到一些变通的方法,但我真的厌倦了这种折腾。

我想在网页上创建一个按钮(最好是用HTML,而不是PHP或ASP),这个按钮能在服务器上运行一个Python脚本。我还希望这个按钮能把表单中的信息发送给这个脚本。

我需要在本地和托管在亚马逊云上的网络服务上做到这一点。我不能在亚马逊云服务上安装任何额外的东西,比如PHP或CGI。

我真的希望能找到一个简单的解决方案,我对Python很熟悉,也能写出很酷的网页,但就是找不到一个简单的办法来解决这个问题。

我理想中的解决方案就像邮件发送标签那样:

<a href="mailto:someone@example.com?Subject=Hello%20again">Send Mail</a>

不过:

<a href="myscript.py?Subject=1234">Run Script</a>

我很怀疑这样的解决方案是否存在,但我可以做梦,对吧。

我想运行的脚本:

  1. 返回用户的唯一ID
  2. 把这个ID发送给一个GIS程序,这个程序会根据ID生成一张地图(ID决定了地图的区域)
  3. 然后把地图导出为PNG格式,写入一个HTML文档,并在新标签页中展示给用户。

编辑 ---------------------------

感谢@Ketouem的回答,我找到了解决我问题的好办法。我会在这里分享一些代码,方便其他人参考。记得下载Python的Bottle模块,真的很不错。

# 01 - Import System Modules
from bottle import get, post, request, Bottle, run, template

# 02 - Script Variables
app = Bottle()

# 03 - Build Temporary Webpage
@app.route('/SLR')
def login_form():
    return '''<form method="POST" action="/SLR">
                Parcel Fabric ID: <input name="UID" type="text" /><br />
                Save Location: <input name="SaveLocation" type="text" value="D:/Python27/BottleTest/SLR_TestOutputs"/><br />
                Air Photo On: <input name="AirPhoto" type="checkbox"/><br />                
                Open on Completion: <input name="Open" type="checkbox"/><br />
                Scale: <input name="Scale" type="text" value="10000"/><br />
                <input type="submit" />
              </form>'''

# 04 - Return to GIS App
@app.route('/SLR', method='POST')
def PHPH_SLR_Script():
    # I won't bother adding the GIS Section of the code, but at this point it send the variables to a program that makes a map. This map then saves as an XML and opens up in a new tab.

 # 04 - Create and Run Page
run(app, host='localhost', port=8080)

1 个回答

8

你可以使用Bottle这个工具:http://bottlepy.org/docs/dev/index.html,它是一个轻量级的网页框架。

撰写回答