在Windows / Apache上设置Python?

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

我如何配置Django + Apache可能会有用,可以在StackOverflow上查看:这里 - alexey
3个回答

25

不要使用mod_python。常见的一个误解是认为mod_python就像mod_php一样,但事实并非如此。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上运行这个应用程序将启动一个Web服务器。配置mod_wsgi让它在Apache内部运行。


在Apache上运行mod_wsgi应用程序非常简单。我强烈建议使用CherryPy,它与Apache和mod_wsgi配合良好,即使它有自己的轻量级服务器。 - Mohan Gulati
以最简单的方式说明如何从Apache运行Python文件。 - Shahid Karimi
1
我收到了这个错误:“内部服务器错误服务器遇到了一个内部错误或配置错误,无法完成您的请求。请联系服务器管理员admin@localhost.com,并告知他们发生错误的时间以及可能导致错误的任何操作。关于此错误的更多信息可能会在服务器错误日志中提供。 Apache/2.2.4 (Win32) PHP/5.2.1 Server at localhost Port 80” - Shahid Karimi
和 @MarthaJames 一样的错误,日志显示系统无法在 d:/wamp/www/test.py 找到文件,但是它确实存在。 - Sami

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的任何请求都应调用index.py中的foo()函数,如果不存在则返回404错误。

0

AddHandler mod_python .py

你设置了'PythonHandler'吗?

现在,考虑使用WSGI而不是本地的mod-python接口,以获得更广泛的部署选项。可以通过mod-python的WSGI支持或者更好的mod-wsgi来实现。(通过wsgiref的CGI也可以正常工作,并且易于在开发环境中设置,但性能较差)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接