在浏览器中运行.py文件

时间:2011-07-07 13:25:16

标签: python apache cgi

我想在浏览器中运行python文件。 我已经安装了apache。并配置了httd.conf个文件。 我创建了test.py文件。 然后,我尝试通过键入test.py在浏览器中运行htt://localhost/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

这可能是什么问题?

10 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:2)

htdocs下的选项+ ExecCgi, ScriptAlias / cgi-bin /“C:/ Program Files / Apache Software Foundation / Apache2.2 / cgi-bin /”

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如果您尚未执行此操作,则需要在test.py上将适当的权限设置为755。

答案 4 :(得分:0)

该文件是否在C:/ Program Files(x86)/ Apache Software Foundation / Apache2.2 / htdocs /中作为错误消息说明。如果不是,你需要把它放在那里或改变你的配置,使它看起来在正确的位置。

此外,作为其他答案,请检查它是否具有正确的权限,并检查它是否输出了所有必需的标题。

答案 5 :(得分:0)

我会在第一个实例中更改您的网址,即http://localhost/test.py而不是您引用的网址(htt://localhost/test.py

答案 6 :(得分:0)

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

答案 7 :(得分:0)

在Windows中使用Apache轻松将Python作为CGI网关运行。 如果您遵循并了解基本知识,则在Windows和Linux中类似。 我将在此重复Windows XAMPP安装的步骤。

要求:您必须具有XAMPP(不是强制性的,但需要Apache,我经常在PHP上工作,因此我拥有XAMPP)

1)从Apache文件夹中打开Apache配置文件 httpd.conf 。 3)搜索“选项索引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版本。 例如,在我之前的代码中,我使用了打印“ Hello”,这可能是由于python 3.7版引发的错误。因此,我将整个代码更改为按照python 3.7正确设置的格式,将其更改为print(“ hello”)

我希望这会有所帮助。

答案 8 :(得分:0)

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

  

!C:\ Python \ Python37 \ python.exe

答案 9 :(得分:0)

首先像这样检查浏览器网址

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

这意味着您的代码正确无误

但是输出显示为python脚本代码 因为“代码在控制台中无法在浏览器中工作” 即是说  您可以直接在htdocs文件夹中打开文件 然后单击filename.html并执行,然后以文本格式输出 用于打开浏览器 解决方法是

  1. 在url中打开浏览器类型
  2. 本地主机/文件路径

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

然后得到答案