有哪些非面向Web的Python框架存在?

6

我正在寻找一个好的框架作为我的应用程序开发基础。

在PHP中,我使用Symfony,在ActionScript中使用PureMVC,它们都是MVC框架。

我正在寻找一种Python框架,面向通用应用程序开发,而不是Web应用程序。我的意思是,只是应用程序、服务、守护进程等等。有时我没有真正的视图要实现,只是一个RPC服务。其他时候我必须编写串口代码,或者实现命令调度器,或者其他任何东西。

对于我的需求,你认为最好的开源软件是什么?为什么你认为你的建议会满足我的要求,胜过其他竞争对手?

编辑:

所谓“通用”,是指不受GUI约束,不管是守护进程还是命令行应用程序,是多进程/多线程还是不是。是通用的,提供良好的架构结构,而不是特定的工具。

编辑 2:

我想解释一下,这个问题涉及到一个或多个“框架”的可能存在,不局限于任何特定的用例,而是能够提供良好和标准化的启动结构/架构,应用一些最佳实践,作为指南,能够指导应用程序本身的架构规划,而不是它们在执行任务方面的行为。
我认为这个问题并不那么主观,可能因为我的英语表述错误,但我认为它是合法的。

2
"general purpose" 是什么意思?GUI界面?还是非GUI命令行界面? - S.Lott
通用目的意味着“通用目的”:)不受GUI的限制,可以是守护进程或命令行应用程序,可以是多进程/多线程或非多进程/多线程。作为通用工具,提供良好的架构结构,而不是特定的工具。 - drAlberT
避免提出主观性、争议性或需要进行长时间讨论的问题。 - Brian Neal
@AlberT:请更新您的问题并提供更多事实。当您可以更新时,请勿在自己的问题上发表评论。 - S.Lott
2
这个问题并不特别主观,但它模糊且开放性很强。但大多数人对它的抱怨是他们认为Python中的通用应用框架毫无意义,而实际上并非如此。但然后我们开始变得主观和争论起来。 :) - Lennart Regebro
显示剩余6条评论
8个回答

9

对于需要异步处理大量连接的网络服务,许多人都喜欢Twisted

然而,在 Python 中除了 Web 应用程序之外,相比其他语言,更少需要全面性的框架 - 核心语言本身就具有表达力、强大并且自带电池; 为什么要添加任何东西呢?


1
为了不重复造轮子? :P - drAlberT
@AlberT,你可能需要的大多数轮子已经包含在标准库中了。 - David Locke
正如我在问题的编辑中所写的那样,我谈论的不是“工具”,而是架构。 - drAlberT
7
@AlberT,你的问题太笼统了,很难得到比这更好的答案。如果你对你的应用了解的仅仅是它是一个应用程序,那么就没有太多可以建议的了。 - Kenan Banks
1
@Triptych:实际上是有的。ZCA。请见下文。 - Lennart Regebro

6

6

1
非常有趣。一旦我深入研究了这个套件,我就会接受你的答案。现在先点个赞。 - drAlberT
给你加上阿尔伯特+1。我想问的比现在给出的一般答案更具体。 - DrFalk3n

3
“不受GUI约束”这个说法有点含糊不清。
通常来说,GUI相当复杂,需要一个框架。人们使用tkinterpyQTpyGTKwxWidgets等来构建GUI。
“守护进程或命令行应用程序”不需要任何框架。这已经是标准库的一部分。
“多进程/多线程与否”也已经是标准库的一部分。
由于“普遍”的意义不太明确,因此有几个答案:
  • 对于GUI开发,是的,有很多框架。 "最好" 是主观的。

  • 对于非GUI开发,没有什么“额外”的框架可言。

  • 对于“事件驱动网络”,有twisted

  • 对于“对象关系映射”,有几个。 "最好" 是主观的。


3
我很难想象一个“框架”可以统一“有或没有GUI、作为守护进程或命令行应用程序、多进程/多线程与否”的概念。您期望这样的框架提供什么?
框架是为了封装各种基本任务 - GUI、Web、异步等等,以便像您所说的那样,用户不必重新发明。但是,您明确排除了使框架成为框架的所有事情,所以我看不出您剩下了什么。
唯一不被排除的就是数据库访问(ORM)。如果这是您想要的全部内容,请查看SQLAlchemy。

好的,让我帮你选择一个比“框架”更好的词吧...也许我的第二次编辑可以澄清我的意思(希望如此)。 - drAlberT

1

Python的核心语言和标准库本身就是一个惊人的框架。

只有那些在某种程度上存在缺陷的语言才需要一个高效开发应用程序的框架(例如:JavaScript需要jQuery或Prototype)。

Python的一般方法是:

  1. 检查标准库;它可能有你需要的东西。
  2. 如果标准库中没有某个大组件,则可能有一个特定的库可以帮助解决问题。

0

Python绑定到GObject和GLib提供了一个应用程序框架,不受GUI或任何其他限制--但是,如果它应该绑定到UI,GTK+会更接近。

GLib提供了诸如应用程序主循环、事件、信号和回调等函数。GObject实现了具有可连接信号插槽的对象的基类。

GLib还提供了许多文件系统抽象,包括VFS、垃圾处理、目录监视、文件元数据等。

Python参考文献在这里:

http://library.gnome.org/devel/pygobject/stable/index.html


0

我认为你所要求的东西并不存在。框架为类似应用程序提供了一个共同的框架,而你要求的是适用于所有应用程序的东西。几乎可以说,这样的东西是不存在的。

相反,对于每种应用程序类型,除非你找到了针对该特定类型应用程序的框架,否则你需要自己提供框架,并使用库来提供跨应用程序共享的常见功能。Python有许多很好的标准库,更多的库可以在PyPi上找到。


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