Python中有没有适合生产的Web应用框架?

14 投票
6 回答
5581 浏览
提问于 2025-04-15 21:37

我听说很多关于Python语言的好评。他们说它成熟、表达能力强等等……我在寻找适合生产环境的企业应用框架,具体来说,“生产环境准备好”是指:

  • 支持目标关系映射,带有缓存和声明式描述(像JPA、Hibernate等)
  • 支持面向控制的用户界面,不是HTML模板,而是像JSF(RichFaces、Icefaces)或GWT、Vaadin、ZK这样的东西
  • 组件分解和依赖注入(像EJB或Spring)
  • 单元测试和集成测试
  • 良好的IDE支持
  • 集群、模块化等(像Terracotta、OSGi等)
  • 有成功的应用程序是由像IBM、Oracle这样的公司开发的(我指的是实际的商业应用,而不是Twitter)
  • 可能有商业支持

在Python的世界里,这一切可能吗?还是说唯一的选择是:

  • 使用Python,从头开始写所有东西(太贵了)
  • 坚持使用Java EE
  • 购买.NET技术栈

6 个回答

5

可以看看 Zope ...

27

Django 看起来是个很不错的选择。它是目前最稳定、开发得最完善的框架,很多大公司都在用。

因为它是一个Python框架,所以基本上可以使用任何Python模块,还有很多专门为Django开发的模块。

它应该能满足你所有的需求,而且学习和使用起来也不是特别难。

15

为了让大家更明白,我在瑞士的一家大型私人银行工作,负责开发企业级应用程序,使用的是J2EE技术栈。

在Python中,有很多“可以投入生产使用”的网络框架,而且也有不少大型的Python网站。

不过,我认为Python并不是一个适合企业级应用的好选择。它可以用作粘合语言或脚本语言(我们的部署脚本就是用Python写的)。对我来说,最大的障碍是向后兼容性(Python 3.x与Python 2.x不兼容)。Python的设计理念似乎更倾向于创新和改进语言,而不是支持十年前写的程序。

在网络框架方面,我非常喜欢Django,但它确实太年轻了,发展得也太快,不适合在企业中使用。我对其他基于Python的框架没有太多经验。

如果你想要一个面向企业的框架,你还是得选择企业级技术栈(Java / .Net)。

另一方面,即使在Java的世界里,也有使用不那么企业化的框架的趋势。比如Spring和EJB2或EJB3相比,Spring要轻量得多。再比如Flex(在我看来远不是一个企业框架)在企业中的使用越来越多。所以,如果你的企业足够开放,愿意迎接未来,使用Django、RoR或其他现代的Web 2.0、社区驱动的开源框架……也许并不是那么难以接受。

最后,直接回答你提到的一些问题:

  • 对ORM/缓存等的支持:是的,但大多数解决方案基于主动记录,这对于你可能想做的90%的事情来说是可以的,但绝对没有JPA/Hibernate那么全面/复杂。
  • 控制导向的用户界面:没有,你找不到标准,所以也找不到第三方组件。你能找到的最接近的可能是与jQuery或其他JS UI框架的集成。
  • 依赖注入:有一个Spring的Python移植版,由SpringSource维护。但依赖注入并不是Python的设计理念。这个问题可以通过函数、默认参数和闭包来解决。我们可以说,Python的解决方案比Java的方式更简洁。
  • 单元测试/集成测试:支持非常好,有多个测试框架。不过,支持程度还是不如Java,因为Java周围有很多测试工具。
  • 良好的IDE支持:由于动态语言的技术限制,提供的支持量是有限的,但至少Eclipse和Netbeans对Python的支持都很好。
  • 集群/模块化:集群问题可以通过“无共享基础设施”和/或分布式缓存来解决。至于模块化(在OSGI的意义上),我所知道的没有解决方案。但我认为,OSGI往往是解决我们在企业中并不存在的问题的方案……

撰写回答