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

时间:2014-08-30 17:23:23

标签: python webserver raspberry-pi

好的,我知道这可能听起来有些不悦,但我正在通过网页制作遥控覆盆子pi汽车。我已经解决了所有问题,除了我试图找到一种方法,当我点击网页上的按钮时,我的网站托管在pi运行的python脚本上。有没有办法做到这一点?可能有图书馆? 请帮帮我。

3 个答案:

答案 0 :(得分:2)

WSGI是Web服务器和Web应用程序之间的标准Python接口。换句话说PEP333,它等同于Java中的servlet Python。

Apache module supporting wsgi。和大多数其他主要的Web服务器一样,我认为。

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

中的一些例子

答案 1 :(得分:1)

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

请参阅:http://en.wikipedia.org/wiki/Common_Gateway_Interface

答案 2 :(得分:-1)

如果您使用的是PHP,则可以对运行shell_exec的PHP页面使用AJAX调用:

的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输入缺失。