.py文件在浏览器中显示代码而不是运行

use*_*854 13 python cgi localhost

我正在尝试使用Python,但无法为localhost正确设置我的服务器(使用Ampps).Python通过IDLE和命令行运行得很好,但是,当我在浏览器中打开文件时,代码会显示而不会运行.

我按照这个http://www.imladris.com/Scripts/PythonForWindows.html教程来设置cgi,但它不起作用.

这是我的"hello world"程序的代码,如果这有什么不同的话.

#!/usr/bin/env python
# -*#!/usr/bin/python

print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Ben*_*rns 6

您的Web服务器将您的python代码视为静态文件而不是可执行文件.这里的目标是你希望Apache执行python并将stdout发送回用户的浏览器.

我不熟悉Ampps,但获得此设置的基本Apache流程就是这样的.

  1. 编辑httpd.conf的Options行以包含ExecCGI
  2. 使用httpd.conf将您的python文件注册为cgi处理程序,方法是添加以下行:
    AddHandler .py
  3. 重启Apache
  4. 确保你的shebang行(顶部的#!/ usr/bin/env python位)实际指向python可执行文件的路径. 对于生活在C:上的python2.6,这可能是:
    #!\Python26\python
  5. 如果您的脚本必须是可移植的,而不是修改shebang行,而是将行添加ScriptInterpreterSource registry到httpd.conf,并确保Windows默认打开带有Python.exe的*.py文件.这可以通过双击脚本来测试.如果它没有执行,请右键单击它,选择打开,然后选择其他,然后浏览到您的python.exe.确保选中"始终使用此程序打开此类文件"框.有一个关于这个Microsoft知识库文章在这里.

最后,mod_wsgi或FastCGI是让Apache执行python的首选方法,先前保留优先级较低的流量站点(每天数千个请求数量为10).我还建议调查web​​框架,例如web.py(非常轻量级)或django(重量较重,但如果你收集用户输入或与数据库连接,可以节省大量时间).

  • 我有一段时间让这个运行起来.我对PHP很有经验,并且已经设置了大约一百万次apache.那里必须有一些更简单的方法.我读过的所有内容都需要编译源代码和各种垃圾.如果python很难设置,难怪为什么更多的人不打扰学习如何编程.PHP是轻而易举的,不确定Python.我现在已经花了2个小时才完成它并且什么都没做. (2认同)