8

我想获得一个简单的 Python “hello world”网页脚本以在 Windows Vista/Apache 上运行但遇到不同的问题。我正在使用 WAMP。我已经安装mod_python并且模块显示了,但是我不太确定我应该在例如 http.conf 中做什么(像 AddHandler mod_python .py 这样的东西要么把我带到一个找不到的文件,要么被禁止,要么模块访问http://localhost/myfolder/index.py时未发现错误)。我可以开始mod_python.publisher工作,但我“想要”这个/需要这个吗?

任何人都可以帮忙吗?

谢谢!

4

3 回答 3

25

远离mod_python。一个常见的误导性想法是,mod_python就像mod_php, 但对于 python。那不是真的。Wsgi是运行 Python Web 应用程序的标准,由PEP 333定义。所以mod_wsgi改用。

或者,使用一些具有服务器的 Web 框架。Cherrypy的特别好。您将能够独立运行您的应用程序,也可以通过mod_wsgi.

使用cherrypy的Hello World应用程序示例:

import cherrypy

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

application = HelloWorld()
if __name__ == '__main__':
    cherrypy.engine.start()
    cherrypy.engine.block()

很容易吧?直接在 python 上运行这个应用程序将启动一个网络服务器。对其进行配置mod_wsgi将使其在 apache 中运行。

于 2009-01-16T11:08:32.760 回答
4

你不需要 mod_python 在网络上运行 Python 代码,你可以使用简单的 CGI 编程来运行你的 python 代码,使用以下链接中的说明:http ://www.imladris.com/Scripts/PythonForWindows.html

这应该会为您提供一些使用 CGI 启用 Python 所需的配置选项,并且谷歌搜索应该会为您提供有关如何在其中编程等的大量其他信息。

如果您想要一个更“友好”的界面,或者对请求本身进行更多控制,Mod_python 很有用。您可以使用它为 Apache 服务器创建请求过滤器和其他内容,并且使用发布者处理程序,您可以获得通过 python 处理网页请求的更简单方法。

发布者处理程序通过将 URL 映射到 Python 对象/函数来工作。这意味着您可以在 python 文件中定义一个名为 'foo' 的函数,并且对http://localhost/foo的任何请求都会自动调用该函数。更多信息在这里:http ://www.modpython.org/live/current/doc-html/hand-pub-alg-trav.html

至于使事情正常运行的 Apache 配置,这样的东西应该可以很好地为您服务

<Directory /var/www/html/python/>
  SetHandler mod_python
  PythonHandler mod_python.publisher
  PythonDebug On
</Directory>

如果您将 /var/www/html/ 设置为 Web 服务器的根目录并在其中的 python/ 目录中有一个名为 index.py 的文件,那么对http://localhost/python/foo的任何请求都应该调用 foo () 函数在 index.py 中,如果不存在则失败并返回 404。

于 2009-01-16T00:38:14.157 回答
0

AddHandler mod_python .py

你设置了'PythonHandler'吗?

这些天来,考虑使用 WSGI 代替原生 mod-python 接口以获得更广泛的部署选项。通过 mod-python 的 WSGI 支持,或者更好的是 mod-wsgi。(通过例如 wsgiref 的 CGI 也可以正常工作,并且很容易在您不关心其垃圾性能的开发环境中设置。)

于 2009-01-16T01:11:41.297 回答