我正在尝试开始使用 Python,但无法为本地主机正确设置我的服务器(使用 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>'
有什么建议吗?
最佳答案
您的网络服务器将您的 Python 代码视为静态文件而不是可执行文件。这里的目标是您希望 Apache 执行 python 并将标准输出发送回用户的浏览器。
我不熟悉 Ampps,但是获取此设置的基本 Apache 流程是这样的。
- 编辑 httpd.conf 的选项行以包含 ExecCGI
- 通过添加以下行将您的 python 文件注册为 httpd.conf 作为 cgi 处理程序:
添加处理器.py
- 重启 Apache
- 确保您的 shebang 行(顶部的 #!/usr/bin/env python 位)实际指向您的 python 可执行文件的路径。对于 C: 上的 python2.6,这可能是:
#!\Python26\python
- 如果您的脚本必须是可移植的,请不要修改 shebang 行,而是将行
ScriptInterpreterSource registry
添加到您的 httpd.conf,并确保 Windows 默认使用 Python.exe 打开 *.py 文件.这可以通过双击脚本来测试。如果它没有执行,请右键单击它,选择打开方式,然后选择其他,然后浏览到您的 python.exe。确保选中“始终使用此程序打开此类文件”框。有一篇关于此 here 的 Microsoft 知识库文章.
最后,mod_wsgi 或 FastCGI 是让 Apache 执行 python 的首选方法,优先选择流量较低的站点(每天请求数以千计)。我还建议研究 web 框架,例如 web.py(非常轻量级)或 django(重量更重,但如果您正在收集用户输入或与数据库交互,则可以节省大量时间)。
- mod_wsgi setup instructions.
- FastCGI documentation (在 Windows 上设置它可能很痛苦)
- Django getting started
- web.py tutorial
关于python - .py 文件在浏览器中显示代码而不是运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124235/