Installing a Python Application Development Environment-
The code that I am going to write now is not fancy stuff (the guitar playing code will have to wait a few days more). It's a business application that I've been talking about with a potential customer. I still haven't closed the deal, but I feel the need to try a few things out before doing so, just to make sure that we are on the right road. I'm not still sure if the application is going to be web-based or wxWidgets based. There are good reasons for both, but I never used wxWidgets for a professional project before, and I don't know about the current quality of the GUI tools for it.
I need the following tools:
- A good programming environment -- that is, the Python interpreter, libs, docs, editor and debugger.
- If wxWidgets comes into play, a good visual RAD tools is a must have. Boa Constructor is the default candidate here - it's free and it seems to be the tool of choice today.
- Database support means two things. First, I need the SQL database engine itself. The range of choices for open source projects is big: MySQL, mSQL, PostgreSQL and Firebird  come to mind. We also need a good ORM, or Object Relational Mapper. There are several good ones for Python: MiddleKit , Object Relational Membrane. Not all ORMs work with every database engine, though.
- Web development tools are also important. The best ones that I know (ignoring Zope for its bloat) are CherryPy, WebWare, Quixote and Cheetah. For this particular project, CherryPy seems to be the best fit, specially for its ability to include a reasonably fast running webserver into the generated code.
There are a few more things that I was tempted to include in my list today, but will have to wait a little bit more. First of all, aspect oriented programming tools seem to be useful for web applications. CherryPy does support it, but there are other options around that deserve a check. Also, source code control is something important for any reasonably sized project. Subversion seems the way to go -- a lot of Python projects are using it, and there are several tools to help managing Subversion-based projects around. But's still too early to tell; also, my current setup does not allow for such complex tools right now.
Basic Toolset -- first round
This list is by no means definitive. It's rather an attempt to select a reasonable amount of tools to try in actual production in a slower machine. I'm probably going to have to limit myself to non-visual tools anyway, but I hope to turn this into an actual advantage.
- First of all, nothing beats ActiveState's Python environment when talking about MS Windows. It's the best Python distro around, for it comes with a valuable selection of tools and docs ready to install. A must have.
- Just in case, I opted to download SciTE, the official Scintilla text editor. PythonWIN text editor is also scintilla based, but SciTE is useful for other tasks too, and have supports syntax-coloring for a lot of different languages. It's a useful addition.
- It's almost an official part of every native GUI development toolkit for Python.
- Boa Constructor
- Boa is in it's 0.3.1 release. It's still pre-alpha, but it works. I don't know if I will be able to use it on my current setup, though.
- Object Relational Mapper 1.0.1
- I've still not decided which database to use -- but I downloaded this ORM, to check the documentation and study it a little bit. It supports a good selection of servers, including MySQL, PostgreSQL and Firebird.