11

I'm a amateur developer with a little experience in PHP.

I recently learnt Python, I've to admit that it is awesome as a programming language and its great libraries, but using that for web development seems to be a big pain in the ass. As far as what i read, I've to use CGI, mod_wsgi, etc. to deploy (http://docs.python.org/howto/webservers.html), Restart the server to see the changes (http://stackoverflow.com/questions/581038/python-web-programming)

My question is, Python being used so widely for web development, Why cant it be as simple as PHP?

ie i would love to write index.py:

print """
<html>
<head>
<title>Hello world</title>
</head>
<body>
Hello world
</body>
</html>"""
4

5 回答 5

10

首先是关于为什么 Python 不像 PHP 那样容易进行 Web 开发的问题:它不是为它设计的。PHP 在使其成为编写 HTML 页面的好语言方面做了大量工作,包括用于 apache 的 mod_php。Python,虽然它是一种非常强大的网络语言,但它的能力也远远超过 PHP。例如,Dropbox 的大多数软件,无论是桌面客户端还是服务器端代码都是 Python。我在日常工作中使用 Python,并使用它通过 Cython 将遗留的 C 代码集成到新的 Python 代码中。

继续。有许多 Python 框架可以让您的 Web 开发体验变得不那么复杂。专业人士和爱好者广泛使用的 2 个值得注意的是 Django 和 Pyramid(以前称为 Pylons)。作为一个新用户,我建议您从 Django 开始,这是一种很好的入门方式,并且可以随着您的经验增长而用于大型和复杂的站点(以及更多)。

您会发现 Django 和 Pyramid 包含“开发服务器”。这些是用 Python 编写的 Web 服务器,它们与框架打包在一起以实现更快的开发。使用这些开发服务器,您可以快速启动并运行。

还有一些纯 Python Web 服务器,它们实际上非常快速、健壮且非常适合生产。要在非常好的 Python 服务器 Gunicorn 上部署 Pyramid 应用程序,只需在 Pyramid 配置中添加几行额外的代码。通常,您会通过 Apache 或 Nginx 对这些纯 Python 服务器进行反向代理。

如果你想走 Apache 服务器路线,你只需要 mod_wsgi。使用 mod_python 或作为 CGI 服务 Python 站点是一种有点过时的方式。WSGI 定义了 Python 处理 Web 请求的标准,因此 mod_wsgi 使 apache 能够以预期的格式将请求传递给 Python 应用程序。

在将 Python 部署到托管服务提供商时,您必须比 PHP 托管更进一步,但官方 Python wiki 上维护了一个很好的列表。底部的 4 个链接提供了不同的列表以满足您的要求。

于 2012-04-16T04:44:57.543 回答
6

[如果] Python 被广泛用于 Web 开发,为什么不能像 PHP 一样简单?即我很想写 index.py ......

根据您的示例, Python可以像 PHP 一样简单。完成上述工作的最简单方法是使用 CGI(并调用您的文件index.cgi而不是index.py.

print 'Content-type: text/html'

这在 PHP 和 Python 中同样适用。 Python 的 CGI 模块将使您快速启动并运行。

就我阅读的内容而言,我必须使用 CGI、mod_wsgi 等来部署

您通常会选择其中一个,实际上您很可能会选择一个基于更现代的 WSGI 的框架,而不用担心低级的东西。但如果您不想这样做,则无需为这些低级接口而烦恼。

重新启动服务器以查看更改

可能不是。必须重新启动服务器是框架和部署配置的限制,通常不需要。如果你使用mod_python这可能适用,但通常不适用(例如,许多框架支持自动重新加载)。

Python 拥有丰富的 Web 开发资源。有准系统(例如 CGI、mod_wsgi)、轻量级系统(例如 CherryPy)和整个框架(例如 Zope)。您可以选择最适合您需求的一种。

能够创建一个简单的文件并产生一些输出可能有助于快速完成某些事情,但这并不是一个丰富、成熟、功能强大的框架的真正标志。当然,您可以立即开始显示某些内容,但是然后呢?突然之间,您将需要导入或编写 Web 框架提供的所有相同类型的功能。对于一个非平凡的网络应用程序,您需要非平凡的框架。

例如,像Django这样的东西会给你一个持久性框架、自动生成的管理界面、一种诱人的语言、URL 调度系统等等。您可以专注于您的应用程序逻辑,而不必担心较低级别的细节。Django 是一个很好的起点,因为它有很好的文档,而且本教程会让你快速上手。

于 2012-04-16T05:13:22.140 回答
1

正如其他人所说,谷歌“python web framework”。有很多,它们都完全不同。为了让您以最快的速度(数小时)开始,我会看一下bottle.py

于 2012-04-16T06:50:17.580 回答
1

Python被广泛用于Web开发,为什么不能像PHP一样简单?

因为 Hello World 无法扩展。因为 Python 不是 PHP。来自维基百科[1] [2]

  • Python 是一种通用的高级编程语言
  • PHP 是最初为 Web 开发而设计的通用服务器端脚本语言

Python 很棒,Python 对DRY友好。不幸的是,当谈到 Web 开发时,DRY 是不够的。如果您真的想(有效地)完成工作:不要重新发明轮子这里总结得很好:

对我来说最大的耻辱似乎是,每个人目前都在一遍又一遍地重建这些东西,并将其合理化为某种秘密酱汁竞争优势,而实际上它是基础设施——真正应该标准化的东西,这样你就可以真正开始做新的和有趣的东西。

因此,如果您采用 python 方式,请使用正确的工具来完成正确的工作:

是的,它比一个 hello world 更复杂,但请记住没有免费的午餐。你是一个业余的开发者,你不是一个专业的程序员系统管理员数据库管理员设计师系统架构师等等。不要害羞地站在巨人的肩膀上,因为现在它是免费的。请不要构建一个现代网络应用程序

此外,PHP 不再像[1] [2]那样流行,参见。PHP的分形坏设计PHP锤子等。

于 2012-04-28T01:44:43.147 回答
0

PHP 仅用于 Web 应用程序开发,更准确地说是用于构建个人主页(这就是 P、H 和 P 的来源)。另一方面,Python 是一种通用编程语言。它适用于很多事情(并且必须包括用于各种任务的各种电池)。因此,请不要期望 Python 的行为方式与 PHP 相同。

独立的 python 脚本将需要相当多的努力才能运行。我建议拿起一个网络框架。您可能想先学习 django (https://www.djangoproject.com/)。您可能还想尝试一下 Google App Engine。除了 heroku、dotcloud、nuagehq 和其他云主机,python(和 django)的部署非常简单和容易。

希望您喜欢使用 Python 开发 Web 应用程序!:)

于 2012-04-16T04:47:16.567 回答