在Windows / Apache上设置Python?

时间:2009-01-16 00:02:43

标签: python wamp mod-python

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

有人可以帮忙吗?

谢谢!

3 个答案:

答案 0 :(得分:25)

远离mod_python。一个常见的误导性观点是mod_pythonmod_php类似,但对于python。事实并非如此。 Wsgi是运行由PEP 333定义的python Web应用程序的标准。因此,请改用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上运行此应用程序将启动一个Web服务器。配置mod_wsgi将使其在apache中运行。

答案 1 :(得分:4)

您不需要mod_python在Web上运行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。

答案 2 :(得分:0)

  

AddHandler mod_python .py

您是否设置了'PythonHandler'?

现在,考虑使用WSGI而不是本机mod-python接口来实现更广泛的部署选项。要么通过mod-python的WSGI支持,要么更好,mod-wsgi。 (通过例如wsgiref的CGI也可以正常工作,并且很容易在不关心其垃圾性能的开发环境中进行设置。)