我希望得到一个简单的Python“hello world”网页脚本,可以在Windows Vista / Apache上运行,但会遇到不同的问题。我正在使用WAMP。我安装了mod_python
并且模块显示了,但我不太确定我应该做什么,例如http.conf(像AddHandler mod_python .py这样的东西会把我带到一个未找到的文件,或者在访问http://localhost/myfolder/index.py时被禁止或模块未找到错误)。我可以让mod_python.publisher
工作,但我“想”这个/需要这个吗?
有人可以帮忙吗?
谢谢!
答案 0 :(得分:25)
远离mod_python
。一个常见的误导性观点是mod_python
与mod_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也可以正常工作,并且很容易在不关心其垃圾性能的开发环境中进行设置。)