views:

341

answers:

8

I'm looking for a good FrameWork on which base my applications development.

In PHP I use symfony, in ActionScript PureMVC, they are all MVC frameworks.

I'm looking for a python framework being oriented to general purpose application development, not web application I mean, just applications, services, daemons and so on. Sometimes I have not a real view to implement, just an RPC service. Other times I have to code serial port, or implement a command scheduler, or whatever.

What is the best OSS I can think as a standard base for my needs? Why you think your suggestion will fulfill my requirements over its competitors?

Thanks in advance

EDIT:

For "general purpose" I mean not being strongly bounded to be with or without a GUI, being a daemon or a cmd line app, being multiprocess/multithread or not. Being general, giving a good architecture structure, not being a particular tool

EDIT 2:

I'd want to explain that the question is about the eventual existence of one or more "frameworks" not being bounded to any particular use case, but being able to give a good and well standardized startup structure/architecture, with some best practices applied, being a guideline, something being able to guide the architecture planning of the application itself, not of their behavior regarding tasks to perform.

I think this question is not so subjective, maybe wrong exposed cause of my english, but I suppose it is legal :)

+9  A: 

For network services needing to handle numerous connections asynchronously, a great many people favor Twisted.

Outside of that (and web applications), however, there's simply less need for overarching frameworks in Python than with many other languages -- the core language itself is expressive, powerful, and comes with batteries included; why add anything?

Charles Duffy
In order to not reinvent the wheel ? :P
AlberT
@AlberT, most of the wheels that you might need are already part of the standard library.
David Locke
As I have written in the edit of the question, I'm not talking about "tools", but architectures
AlberT
@AlberT, your question is way too general to get a better answer than this. If all you know about your application is that it's an application, there's not much to suggest.
Triptych
@Triptych: Actually, there is. The ZCA. See below.
Lennart Regebro
+6  A: 

Check out the Zope Component Architecture. It's an architecture to use and reuse components. It's mostly used in web applications because it's used in Zope (as the name implies) but it is in no way web specific.

I wrote a quick intro to it: http://regebro.wordpress.com/2007/11/16/a-python-component-architecture/

Here is an online book about it: http://www.muthukadan.net/docs/zca.html

And here is a non-online book: http://www.amazon.com/dp/354076447X

Lennart Regebro
+3  A: 

"not being bounded to be with or without a GUI" doesn't make a lot of sense.

GUI's -- generally -- are quite complex and require a framework. Folks use tkinter, pyQT, pyGTK, wxWidgets, etc. to build GUI's.

"daemon or a cmd line app" does not require a framework of any kind. This is already part of the standard library.

"being multiprocess/multithread or not" is already part of the standard library.

Since, "general" doesn't have much meaning, there are several answers:

  • For GUI development, yes, there are many frameworks. "Best" is subjective.

  • For non-GUI development, there are no "additional" frameworks to speak of.

  • For "event driven networking", there is twisted.

  • For "Object-Relational Mapping", there are several. "Best" is subjective.

S.Lott
+3  A: 

I'm having difficulty imagining what a "framework" would be that unifies "with or without a GUI, being a daemon or a cmd line app, being multiprocess/multithread or not". What do you expect such a framework to provide?

Frameworks are built to encapsulate various basic tasks - GUI, or web, or asynchronicity, or whatever - so that, as you say, users don't have to reinvent them. But you're explicitly excluding all the things that make a framework a framework, so I can't see what you're left with.

About the only thing you don't exclude is database access (ORM). If that's all you want, look at sqlalchemy.

Daniel Roseman
Ok, let help me in choosing a best word than "framework" .. maybe I'm just poor in dict, but my second EDIT should clarify what I mean (I hope)
AlberT
+1  A: 

Python's core language and standard library are an amazing framework by themselves.

Only languages which are deficient in some way need a framework for efficient development of applications (ex: Javascript needs jQuery or prototype).

The general approach with python is:

  1. Check the standard library; it probably has what you need.
  2. If there's some large component that isn't in the standard library, there's probably a specific library that help with it.
Christian Oudard
A: 

Python bindings to GObject and GLib provide an application framework not bound to GUI or anything-- however, if it should be bound to a UI, GTK+ comes closer.

GLib provides functions such as an application main loop, events, signals and callbacks. GObject implements the base class for objects with connectable signal slots.

GLib also offers a lot of Filesystem abstraction, including VFS, trash handling, directory monitoring, file metadata.

The python reference is here:

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

kaizer.se
+5  A: 

i would guess what you're looking for might be the enthought tool suite, particularly envisage.

Autoplectic
Very interesting. As soon as I will have performed a deeper look into the suite I'm going to accept your answer. +1 for now.
AlberT
Quote Albert + 1 for you. I was wondering something more specific thangeneral answer given until now
DrFalk3n
A: 

I don't think what you are asking for exists. Frameworks provide a common frame for similar applications, whereas you are asking for something for all applications. Almost by definition, such a thing can't exist.

Instead, for each application type, unless you find a framework for that specific type of app, you provide the framework yourself and use libraries to provide common functionality shared across applications. Python has many good libraries that come as standard and more can be found at PyPi.

Kylotan