【问题标题】:How to run python script in HTML?如何在 HTML 中运行 python 脚本?
【发布时间】:2017-04-12 05:03:33
【问题描述】:

目前我有一些 python 文件连接到 sqlite 数据库以供用户输入,然后执行一些设置程序输出的计算。我是 python web 编程的新手,我想知道在 web 上使用 python 的最佳方法是什么?

例如:我想在用户单击网页上的按钮时运行我的 python 文件。有可能吗?

我从 Django 开始。但它需要一些时间来学习。我还看到了一种叫做 CgiScripts 的东西。我应该使用哪个选项?请指教。

【问题讨论】:

标签: python html web


【解决方案1】:

您可以使用 php

使用 html 运行 python 文件

写一个 PHP 文件为 index.php:

<html>
<head>
<title>run my python files</title>
<?PHP
echo shell_exec("python test.py 'parameter1'");
?>
</head>

将参数传递给python 创建一个 python 作为 test.py:

import sys
input=sys.argv[1]
print(input)

打印PHP传递的参数。

【讨论】:

  • 整洁!要在您的论点中支持空格,请尝试这样做:echo shell_exec("python test.py \"Parameter 1\"");
【解决方案2】:

这可能取决于你想做什么。我个人使用 CGI,如果你从网页输入的内容很简单,它可能会更简单,而且学习时间更少。这里有一些资源:

但是您可能仍然需要进行一些配置以允许它运行程序而不是显示它。

这里有一个教程:http://httpd.apache.org/docs/current/howto/cgi.html

【讨论】:

  • 非常感谢您的回复。我浏览了这个例子,我正在寻找类似的东西。但是我需要遵循一个目录结构来保存我的文件吗?如何运行文件?请澄清。
  • 我将所有 CGI 程序保存在一个目录 (cgi-bin) 中并配置该目录以便执行程序。我将进行编辑以添加指向教程的链接。
  • 非常感谢。我开始在 cgi 中运行程序。
  • 没问题!祝你好运!
  • @AndrewAnderson 是的,我想是的
【解决方案3】:

如果您的网络服务器是 apache,您可以使用 http://modpython.org/ 模块来运行您的 python CGI 脚本。

对于 nginx,你可以使用http://modwsgi.readthedocs.io/en/develop/

【讨论】:

  • mod_python 项目早已死去,不应该用于任何新事物。 Apache 的选项,而不是您拥有的 nginx,是 mod_wsgi,但 Google 代码站点是不再使用的旧站点,请改用 modwsgi.org
【解决方案4】:

感谢 WebAssembly 和 Pyodide 项目,现在可以在浏览器中运行 Python。看看我的tutorial就可以了。

        const output = document.getElementById("output")
        const code = document.getElementById("code")

        function addToOutput(s) {
            output.value += `>>>${code.value}\n${s}\n`
            output.scrollTop = output.scrollHeight
            code.value=''
        }

        output.value = 'Initializing...\n'
        // init pyodide
        languagePluginLoader.then(() => { output.value += 'Ready!\n' })

        function evaluatePython() {
            pyodide.runPythonAsync(code.value)
                .then(output => addToOutput(output))
                .catch((err) => { addToOutput(err) })
        }
<!DOCTYPE html>

<head>
    <script type="text/javascript">
        // default pyodide files URL (packages.json, pyodide.asm.data etc)
        window.languagePluginUrl = 'https://pyodide-cdn2.iodide.io/v0.15.0/full/';
    </script>
    <script src="https://pyodide-cdn2.iodide.io/v0.15.0/full/pyodide.js"></script>
</head>

<body>
    Output:
    </div>
    <textarea id='output' style='width: 100%;' rows='10' disabled></textarea>
    <textarea id='code' rows='3'>
import numpy as np
np.ones((10,))
    </textarea>
    <button id='run' onclick='evaluatePython()'>Run</button>
    <p>You can execute any Python code. Just enter something in the box above and click the button. <strong>It can take some time</strong>.</p>
</body>

</html>

【讨论】:

    【解决方案5】:

    不能直接运行python

    你可以用这个

    http://karrigell.sourceforge.net/en/pythoninsidehtml.html
    

    or for inside php this

    http://www.skulpt.org/
    

    【讨论】:

      【解决方案6】:

      您应该尝试烧瓶或 django 框架。它们用于集成python和html

      【讨论】:

        【解决方案7】:

        烧瓶有办法做到这一点!

        安装

        首先你必须输入pip install flask

        设置

        你说过当用户点击一个链接时你希望它执行一个 python 脚本

        from flask import *
        #importing all the methods, classes, functions from flask
        
        
        app = Flask(__name__)
        
        
        #This is the first page that comes when you type localhost:5000... it will have a a tag that redirects to a page
        @app.route("/")
        def  HomePage():
            return "<a href='/runscript'>EXECUTE SCRIPT </a>"
        
        #Once it redirects here (to localhost:5000/runscript) it will run the code before the return statement
        @app.route("/runscript")
        def ScriptPage():
            #Type what you want to do when the user clicks on the link
            # once it is done with doing that code... it will redirect back to the homepage
            return redirect(url_for("HomePage"))
        
        #Running it only if we are running it directly from the file... not by importing
        if __name__ == "__main__":
            app.run(debug=True)
        
        

        【讨论】:

          猜你喜欢
          • 2016-03-19
          • 1970-01-01
          • 1970-01-01
          • 2017-04-15
          • 2019-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-30
          相关资源
          最近更新 更多