【问题标题】:Running a .py file in browser在浏览器中运行 .py 文件
【发布时间】:2011-09-30 11:28:14
【问题描述】:

我想在浏览器中运行 python 文件。 我已经安装了阿帕奇。并配置httd.conf 文件。 我创建了test.pyfile。 然后我尝试通过在浏览器中输入htt://localhost/test.py 来运行test.py。当我这样做时,我收到以下错误:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, lohith.pinto@primefocusworld.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.

在我的错误日志中

[Thu Jul 07 18:39:55 2011] [error] [client 127.0.0.1] (OS 2)The system cannot find the file specified.  : couldn't create child process: 720002: test.py
[Thu Jul 07 18:39:55 2011] [error] [client 127.0.0.1] (OS 2)The system cannot find the file specified.  : couldn't spawn child process: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/test.py

这可能是什么问题?

【问题讨论】:

  • 在浏览器上运行 Python 意味着你必须配置你的浏览器,而不是你的服务器。当您在浏览器中运行 Python 时,您的浏览器(FireFox、IE、Opera、Safari 等)正在运行 Python。这与 Apache 无关。你真正想做什么?
  • @S.Lott 以及如何配置浏览器?

标签: python apache cgi


【解决方案1】:

如果您的 shebang 不正确(例如,像 #!/usr/bin/env python 这样的 Unix 系统),也可能会发生这种情况。如果是这种情况,请将其更改为 Python 可执行文件的正确路径(例如:#!C:\Python26\python.exe)或查看以下答案: How do I ignore the Perl shebang on Windows with Apache 2?

【讨论】:

  • 哇太棒了,你值得竖起大拇指。
【解决方案2】:

htdocs下的Options +ExecCgi, ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"

这就是我所拥有的,并且有效

【讨论】:

  • 你的文件应该在 cgi-bin 下
【解决方案3】:

如果它是一个 CGI 程序,请确保它符合 CGI 规范(即在尝试编写其他任何内容之前,它会输出一个带有 MIME 类型的标题行和一个空白行)

【讨论】:

    【解决方案4】:

    如果您还没有这样做,您需要将test.py 的适当权限设置为 755。

    【讨论】:

    • 感谢回复,如何在 windows 7 中设置此权限。
    • @Roayl Pinto -- 好问题;我自己是个 Unix 人。我没有意识到你是在 Windows 上的,这对 Apache 来说可能并不重要。
    【解决方案5】:

    是 C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/ 中的文件,如错误消息所述。如果不是,您需要将其放在那里或更改您的配置,使其位于正确的位置。

    另外,与其他答案一样,检查它是否具有正确的权限并检查它是否输出了所有必要的标头。

    【讨论】:

      【解决方案6】:

      我会首先将您的网址更改为更有可能的网址,即http://localhost/test.py,而不是您引用的网址(htt://localhost/test.py

      【讨论】:

        【解决方案7】:

        你可以试试 mod_python,它支持用 python 编写的 web 应用程序。解析器作为 apache 模块嵌入到服务器中,因此应用程序比传统的 cgi 运行得更快。 另外,如果你想坚持cgi方式,请确认所有的.py文件都在名为“cgi-bin”的文件夹中并且具有可执行权限。

        【讨论】:

          【解决方案8】:

          在带有 Apache 的 Windows 中运行 Python 作为 CGI 网关很容易。 如果您遵循并了解基础知识,它在 Windows 和 Linux 中是相似的。 我将在这里重复安装 Windows XAMPP 的步骤。

          要求:你必须有 XAMPP(不是强制性的,但需要 Apache,我经常使用 PHP,因此我有 XAMPP)

          1) 从 Apache 文件夹中打开 Apache 配置文件 httpd.conf。 3) 搜索“Options Indexes FollowSymLinks”并添加 ExecCGI 选项。 它可能看起来像:

          Options Indexes FollowSymLinks Includes ExecCGI
          

          您可能有更少或更多的选择。

          4) 搜索“AddHandler cgi-script .cgi”行,如果它前面有#(注释),则取消注释并添加 .py 处理程序。 它应该看起来像:

          AddHandler cgi-script .cgi .pl .asp .py
          

          5) 保存 httpd.conf 并重新启动 Apache。 6) 现在最重要的部分是您创建 py 脚本文件的方式。 请参阅下面的示例。

          #!C:\Python\Python37\python.exe
          print("Content-type: text/html")
          print("")
          print("<html><head>")
          print("")
          print("</head><body>")
          print("Hello.")
          print("</body></html>")
          

          第一行必须指向特定于您机器的 python 安装。

          #!C:\Python\Python37\python.exe
          

          对于 linux 这可以是

          #!/usr/bin/python
          

          此外,您的 Python 脚本必须放在 Apache 的 htdocs 文件夹或 webroot 文件夹中 我有 python 3.7,因此我添加了它的位置,如上所示。 最后确保您的 python 代码应该特定于您正在使用的 python 版本。 例如,在我之前的代码中,我使用了 print "Hello",这可能是由于 python 3.7 版引发的错误。因此,我将整个代码更改为按照 python 3.7 正确格式化,将其更改为 print("hello")

          我希望这会有所帮助。

          【讨论】:

            【解决方案9】:

            在第一行使用窗口“\”解决了我的问题。在另一个线程中,特别需要右斜杠“/”。

            #!C:\Python\Python37\python.exe
            

            【讨论】:

              【解决方案10】:

              首先检查浏览器网址

              file:///C:/xampp/htdocs/cgi_python/form.html
              

              也就是说你的代码是正确的,没有错误

              但输出显示为 python 脚本代码 因为“代码在控制台而不是浏览器中工作” 即平均 您直接在 htdocs 文件夹中打开一个文件 并单击 filename.html 并执行然后以文本格式输出 打开浏览器 解决办法是

              1. 打开浏览器输入url
              2. 本地主机/文件路径

              例如。 http://localhost/cgi_python/form.html

              然后得到答案

              【讨论】:

              • 欢迎来到 Stack Overflow。请参阅this article on how to write a good answer。虽然您的问题内容可能对 OP 有所帮助,但由于格式不佳,难以阅读,因此用户可能会忽略它。
              猜你喜欢
              • 2012-04-24
              • 2017-01-02
              • 2016-04-29
              • 2020-05-18
              • 2018-12-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-10-19
              相关资源
              最近更新 更多