在浏览器中运行.py文件

问题描述 投票:7回答:9

我想在浏览器中运行python文件。我已经安装了apache。并配置了httd.conf文件。我创造了test.pyfile。然后我尝试通过输入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, [email protected] 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 apache cgi
9个回答
11
投票

如果你的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 /”

这就是我拥有的,它的工作原理


1
投票

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


0
投票

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


0
投票

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

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


0
投票

我会在第一个例子中将你的网址更改为更可能的网址,即http://localhost/test.py而不是你引用的网址(htt://localhost/test.py


0
投票

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


0
投票

使用Apache在Windows中运行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版本。例如,在我之前的代码中,我使用print“Hello”,这可能是由于python版本3.7引发错误。因此我改变了我的整个代码以正确格式化为python 3.7将其更改为print(“hello”)

我希望这有帮助。


0
投票

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

#!C:\Python\Python37\python.exe
© www.soinside.com 2019 - 2024. All rights reserved.