Python新手:在启用Python的Web服务器上,如何使用Python?
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgitb
cgitb.enable()
print "Content-Type: text/plain;charset=utf-8"
print
print "Hello World!"
我的目标是用Python替代PHP。我对PHP还算熟悉,也能在自己电脑上用Python,但在我的网络服务器上却搞不定。我的网络托管服务说他们支持Python,所以我一定是哪里做错了。
现在,Python通常和CGI一起使用。那Python文件一定要放在我的cgi-bin文件夹里吗?我从来没见过后缀是py或cgi的网页文件,我不知道这些东西是怎么工作的,我其实只熟悉PHP。
我看了谷歌的“学习Python”课程的前一个小时,但那只讲了如何在本地运行Python。
:( 对不起,我真是个菜鸟,请帮我解决这个问题。
3 个回答
根据你选择的网络托管公司,开头的那行 #!/usr/bin/env python 可能需要稍微改一下。有些公司会在“python”后面加上版本号,还有一些则把python放在不同的文件夹里。你需要向你的服务提供商确认一下。
另外,你需要给这个文件设置执行权限(而不是写入权限),因为你希望别人能够运行这个脚本。
现在,如果你把这个代码上传到 cgi-bin 文件夹,并且文件扩展名是 .cgi 或 .py,然后在浏览器中访问它,会发生什么呢?
此外,如果你在网上搜索“python cgi”,会找到很多教程。对于一些简单的任务,cgi 是可以正常工作的,虽然正如其他人所说的,还有一些更高效的方式可以使用。
你不能在同一页面上同时使用 python 和 html,但有一些方法(比如 python 和服务器端包含或 SSI)可以让你在 html 页面中放一个标记,调用你的 python 程序,并把程序的响应放到最终显示的 html 中。
用Python做网页应用,其实跟CodeIgniter或者Cake PHP这类框架更像。
你可以先试试Django,看看教程就行。很多老练的PHP开发者对Django的最大抱怨就是它不允许你把代码和HTML混在一起——但这其实是件好事。
当然,你也可以用传统的CGI方式,但那样会比较麻烦。
这是一个完全可以接受的CGI脚本。如果你使用的是Apache服务器,它需要放在你的cgi-bin文件夹里,并且需要是可执行的(我可能说错了),而且你应该用这个语言的常见扩展名来命名它,比如.py
或者.cgi
。
如果你可以控制你的网页服务器将哪些文件视为CGI文件,你可以把文件放在任何你想要的位置。不过,通常情况下,你是无法控制这一点的。你可以在这里查看关于Apache中CGI的更多信息:http://httpd.apache.org/docs/2.2/howto/cgi.html
简单来说,Apache不会把一个文件当作CGI文件,除非满足两个条件:需要通过AddHandler
或SetHandler
指令来激活cgi-script
,并且在Options
指令中需要启用ExecCGI
。通常情况下,在共享主机环境中,用户是无法做到这一点的。
补充说明一下,CGI只是一个机制,让你可以用任何语言编写脚本,然后让你的网页服务器执行这些脚本,并将输出结果发送给用户。由于每次请求时服务器都会启动一个新的解释器实例,所以这并不是推荐的做法,除了用于简单的脚本。对于Python来说,最好的解决方案是使用一个WSGI
兼容的框架,比如Flask
、Bottle
或者Django
。前两个是微框架,尽量不干扰你的开发,而Django是一个全栈框架,提供了很多功能。