有没有办法让网页在Raspberry Pi上运行python脚本?

问题描述:

好吧,我知道这可能听起来有点不喜欢,但我正在制作一个遥控覆盆子pi汽车通过网页供电。我已经整理了一切,除了即时通讯试图找到一种方法,使我的网站托管在PI运行Python脚本,当我点击网页中的按钮。有没有办法做到这一点?可能与图书馆? 请帮我一把。有没有办法让网页在Raspberry Pi上运行python脚本?

+0

的一些例子,看看python烧瓶?你是否要求轻量级的框架工作? – 2014-08-30 17:37:31

是的。最简单和最古老的方法是使用CGI。配置您的Web服务器,以便当它获得对特定URL的请求时(例如在单击表单后),它将执行python脚本。 CGI是通用的,因为任何可执行文件都可以运行,并且其标准输出将返回给发起请求的浏览器。 (更多或更少 - 也有一些标头添加到标准输出和)

参见:http://en.wikipedia.org/wiki/Common_Gateway_Interface

+0

一个RPi不够勉强可以求助于CGI,但如果你喜欢它,它是一个可行的解决方案。 – 2014-08-30 18:13:28

如果您使用的是PHP,你可以使用一个AJAX调用运行了shell_exec一个PHP页面:

的index.php:

<?php 
echo '<!DOCTYPE html><html><head><meta charset="UTF-8"><script src="script.js"></script><title>Your Site Name</title></head><body>'; 
echo '<button type="button" onclick="run(\'yourscriptname.py\')">Run Your Script</button>'; 
echo '<br><div id="scriptResults"></div>'; 
echo '</body></html>'; 

的script.js:

function run(scriptName){ 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "run.php?script=" + scriptName, true); 
    xhr.onreadystatechange = function(){ 
     if (xhr.readyState === 4 && xhr.status === 200){ 
      document.getElementById("scriptResults").innerHTML += "<br>" + xhr.responseText; 
     } 
    }; 
    xhr.send(); 
} 

run.php:

<?php 
if (isset($_GET['script'])){ 
    echo shell_exec('python ' + $_GET['script']); 
} 

请注意,这是一个基本的框架,并有像过滤$ _GET输入缺少一些东西。

+1

为什么使用PHP为运行Python脚本启动shell? – Zulu 2014-08-30 18:45:36

+0

我的解决方案不会导致页面重新加载,并为您提供脚本的即时输出。它使您能够单击多个按钮,即运行多个脚本而无需等待浏览器加载新页面。 – Tim 2014-08-30 22:21:58

+0

@Zulu另外,提问者没有说明他在编写他的网页。这就是为什么我的答案是以“如果你正在使用PHP”开头的。我不明白为什么一个工作解决方案值得投票。 – Tim 2014-08-30 22:27:10

WSGI是Web服务器和Web应用程序之间的标准Python接口。为了解释PEP333,它等同于Java中的servlet的Python。

还有Apache module supporting wsgi。我假设,以及对于大多数其他主要的Web服务器。

对于简单的应用程序,尽管您不需要完整的Web服务器。也许你应该看看wsgi reference implementation page