在Apache/Windows中像PHP一样使用Python

6 投票
5 回答
2487 浏览
提问于 2025-04-15 18:26

我明白我应该使用mod_wsgi来运行Python,但我在设置这个的时候有点困惑:

这是我找到的一个关于web.py的示例配置:

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /appname /var/www/webpy-app/code.py/

Alias /appname/static /var/www/webpy-app/static/
AddType text/html .py

<Directory /var/www/webpy-app/>
    Order deny,allow
    Allow from all
</Directory>

所以...我明白我需要配置我的网络服务器,让它指向Python应用程序?难道没有办法像使用PHP那样,当我请求一个.py文件时,Python就能直接解释它吗?我该如何让我的网络服务器处于最基本的状态,这样我可以上传一个包含print "Hello World"的文件,发出请求后,它能显示“Hello World”?

5 个回答

2

我觉得WSGI/mod_wsgi不太适合你想做的事情——因为WSGI应用程序通常会接管网址解析,这样就和你想要的“像PHP那样工作”不兼容了。

如果你不想使用CGI,我觉得mod_python的Publisher更接近你的需求:http://modpython.org/live/mod_python-3.3.1/doc-html/tut-pub.html

6

最像PHP模型的可能是Python Server Pages,简称PSP。

mod_python有一个PSP处理器。你创建的文件看起来像这样

<html>
<body>
<%
for n in range(3):
  # This indent will persist
%>
<p>This paragraph will be 
repeated 3 times.</p>
<%
# This line will cause the block to end
%>
This line will only be shown once.
</body>
</html>

Spyce在PSP模型的基础上更进一步,还有Webware for Python也是如此。

这篇文章是对mod_python的PSP的一个很好的介绍。

4

我觉得你可以用apache的mod_cgi功能,输入一个可以访问的python文件的链接,前提是这个脚本的第一行要写好。

#!/usr/bin/python

不过,这种方式访问python代码效率非常低,因为每次访问页面时,apache都得重新加载python。如果只是偶尔用来维护的脚本,这样做还可以,但不适合用户频繁访问的内容。

补充:我没注意到你是在Windows上。类似的操作应该也能实现。你可以试着在网上搜索一下 python apache cgi

补充:如果你的apache已经在cgi模式下运行了,那就不需要每次都重启它。只要脚本在指定的链接路径下存在并且可以执行,它就会运行。如果找不到脚本,你就会看到404页面找不到的错误。

补充:我快速在网上搜索了一下“python cgi”,找到了十年前Python创始人做的幻灯片。这些幻灯片记录了一个过时的版本,但从第41页开始的内容可能对你有帮助。就像我说的,大家已经不太用这种方法来做网页应用了,但如果你的需求简单,这种方式还是能用的。 http://legacy.python.org/doc/essays/ppt/sd99east/index.htm

补充:最好的方法取决于你想做什么。使用一个可以帮你处理服务的框架可能会很有用。我推荐Web2py,这是一个功能强大且安全的框架,可以让你编写脚本并动态添加。它有Windows版本,里面包含一个简单的网页服务器,或者你也可以配置apache。因为所有东西都包含在内,如果你看一下入门信息,几分钟内就能开始使用。如果你之前没有用过网页框架,对“模型视图控制器”等术语不熟悉,也不要被吓到。 http://www.web2py.com/

撰写回答