【问题标题】:Run Python application from browser从浏览器运行 Python 应用程序
【发布时间】:2014-05-10 21:50:47
【问题描述】:

我对编程很陌生,我在业余时间一直在学习 Python。作为对自己的挑战,我为一个班级项目创建了一个简单的文本冒险。这不是针对编程课的,因此教授不会知道如何编译原始 Python 脚本,更不用说在他们的 Mac 上安装 Python 解释器了。

话虽如此,是否可以从浏览器运行 python?我在想象一些 HTML 文件,我的教授或任何人都可以点击它来启动浏览器,然后他们可以从那里玩我的游戏。

我从我对这个主题的研究中了解到了一个叫做 Django 的东西。但是,我不知道它是什么,也不知道如何实现它。再说一次,我对编程很陌生,所以如果你能“像我五岁一样解释”,那就太好了。

编辑:我发现 OP 提出了类似问题的另一个线程,但我不完全理解批准的答案:

execution python application from browser

【问题讨论】:

  • Mac 已经预装了 python...
  • 为什么不使用 py2app 将您的游戏构建到 Mac 应用程序中?
  • 看看pyjs
  • @joemar.ct py2app 是否像 py2exe 但适用于 Mac?我已经使用 py2exe 成功地制作了我的游戏的 exe,但后来我记得我的教授使用的是 Mac。
  • PythonAnywhere dev 在这里。您绝对可以在我们网站上基于浏览器的控制台中运行您的脚本——只需上传您的代码,点击“保存并运行”,然后您甚至可以使用我们在控制台上的共享按钮与您的教授共享它...在这里开发。您绝对可以在我们网站上基于浏览器的控制台中运行您的脚本——只需上传您的代码,点击“保存并运行”,然后您甚至可以使用我们在控制台上的共享按钮与您的教授共享它...请参阅下面 Gary Walker 的回答。

标签: python django python-2.7


【解决方案1】:

嗯,不是真的。您的基本浏览器通常支持 1 种编程语言,javascript。

但是,您可以使用 pythonanywhere",这是一个托管的 Python 环境。

您也可以尝试skulpt,它是python 的javacript 实现。我自己从未尝试过。

【讨论】:

    【解决方案2】:

    您可以在内部网络上托管网站并从那里运行程序。阅读有关 Python CGI 编程的更多信息 here 制作一个表单来执行您的脚本并将结果打印为 html 页面

    例如,您可以有一个要求在文本框中输入的表单:名称:_,值:__,提交

    当他们按下按钮后,浏览器会向python程序发送请求,执行它,并将结果以html网页的形式显示给客户端。

    此外,如果您使用的是学校计算机,则无需安装任何其他第三方模块。但是,在将网站托管在学校网络上之前,请先询问您的老师。

    问题是您的程序是一个“文本冒险”,需要对 CGI 程序进行更多的输入/输出管理。

    您可以将此答案用于其他项目。

    无论如何,以下是设置服务器的步骤:

    1) 为您的网站创建一个文件夹并添加一个“index.html”文件(可以是任何内容)

    2)在文件夹中添加一个favicon.ico文件(这样可以加快连接速度)You can download this one

    3) 把这个python程序放到文件夹里(用来托管网站)

    import BaseHTTPServer
    import CGIHTTPServer
    import cgitb; cgitb.enable()
    from socket import gethostbyname, gethostname
    
    
    def server(port):
        server = BaseHTTPServer.HTTPServer
        handler = CGIHTTPServer.CGIHTTPRequestHandler
        server_address = ("", port)
        httpd = server(server_address, handler)
        print "Server %s:%s started" % (gethostbyname(gethostname()), str(port))
        httpd.serve_forever()
    
    server(4) #You can change this. It is a port number
    

    4) 创建一个 cgi-bin 文件夹

    5) 要使网站可用,请执行在步骤 3 中创建的程序。要停止托管它,只需关闭 python 控制台。

    6) 当程序运行时,您可以进入浏览器并输入 IP 地址:端口作为 URL。您将看到 index.html 页面和 favicon.ico 图标。任何连接到同一网络的人都可以访问该网站。您也只有您自己也可以通过在浏览器中输入 http://localhost:port 来访问该网站,其中“port”是您设置的端口

    7) 其余的需要您自己管理。我无法创建完整的脚本,因为我不知道您的程序中有什么。阅读开头提供的链接并修改您的程序以使其在浏览器中运行。

    仅供参考:可以使用不同的端口同时托管多个网站或同一网站的一个实例。并且,您可以使用 Python CGI 设置和读取 cookie

    如果由于我的回答中的错误而导致某些事情不起作用,请发表评论。我会努力解决的。

    【讨论】:

    • @aj8uppal,谢谢。我从事 CGI 编程已经有一段时间了,很高兴回答这个问题。一切都从我想在浏览器中运行的一个简单程序开始......
    • 我还没有尝试过这个解决方案,但据我所知:这将创建一个网页,我将不得不在其他地方托管自己?它不完全是我正在寻找的东西,但我确实有一个域名,我可以把它扔在上面。无论如何,我需要开始在线托管我的投资组合。我会在我给这个旧大学尝试后报告!
    • @Boateye,这只是在没有域名的内部网络上托管一个简单的http服务器。例如,如果您的 IPv6(内部 IP)是 192.168.1.3,并且您在端口 8080 上运行它,那么您网络上的任何人都可以通过进入浏览器并输入 192.168.1.3:8080 来查看您的网站。但是,我的回答的第二部分是一般地谈论 Python CGI。如果您有自己的域名,您只需在服务器中启用 CGI 并将所有文件放在设计的文件夹中即可执行脚本。
    • @Boateye,你有没有在网址的末尾看到类似“?a=123&b=321”的内容?这用于使用 GET 或 POST 方法将数据从 html 表单传递到通用网关接口脚本(几乎任何编程语言)。然后程序使用这些变量(a = 123,b = 321)来执行程序,并且您拥有的“打印”答案的所有内容都显示为用户的 html。我最近了解到 Google 搜索使用 Python CGI。 (此信息可能不完全正确,但根据许多来源,它是)
    【解决方案3】:

    到目前为止,所有答案都假设您的游戏可以作为网络应用程序呈现。只有在将程序(或其中的一部分)编写或转换为 Javascript 时才能这样做,因为现有的编译器(例如 pyjs)非常有限,这实际上可能无法正常工作。

    如果您在 GUI 中制作程序(使用“Tkinter”、“Pygame”、wxPythonPyQt 等),最好的选择是使用 py2apppyinstaller.

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 1970-01-01
      • 2014-01-31
      • 2014-10-23
      • 2013-03-02
      • 2011-10-26
      • 2016-08-16
      • 2018-03-29
      • 1970-01-01
      相关资源
      最近更新 更多