Python Notes

Tuesday, August 31, 2004

Installing a Python Application Development Environment-

I am installing a brand new Python environment on a low-end PC to keep up with my software development tasks while I'm off my office. The PC is really low end by todays standard -- a Pentium 166 -- but still, it should be enough for by needs, that is, mostly writing code. It has a few advantages too - in the sense that I'm not going to be able to test everything by the old lazy hit-the-run-button approach, and I'm probably going to have to rely on the well disciplined code reading approach to check out my code before running (after all, running it may be too slow).

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 [1] come to mind. We also need a good ORM, or Object Relational Mapper. There are several good ones for Python: MiddleKit [1], 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.


Post a Comment

<< Home