úterý 23. února 2010

Python IDE for Linux

Emacs


Since I started working with Python some 10 or more years ago, I always used Emacs for coding. Some people complain that Emacs is a nice operating system, but that it lacks a good editor, but I learned to like its power and (really, no kidding) simplicity.
To edit Python source code in Emacs, a dedicated modules exists. It supports syntax highlighting, launching of scripts, has nice features for indentation and even a rudimentary class and function browser. Being still Emacs, it does not require you to touch the mouse for anything, which I found to be great for productivity. The only thing that I found inconvenient was debugging using pdb. Fortunately you can often find your way around this using print statements, so it did not bother me much.

Eclipse/Pydev


Last year I started working on goldify and because it was my first Java project, I decided to use some tool that would help me with the code. I used Eclipse and was delighted by its power, even though it is slightly more hungry for resources than I would like.
Inspired by this experience, I decided to try it also for Python and installed Pydev. Of course because of the fluid nature of Python, it is not possible to offer that many functions (type of a variable is almost never sure, so it is complicated to infer possible methods, etc.) or they are often limited to simple cases (I found that refactoring does not work for me almost as often as it does). However the general feeling, especially for larger projects, is much better than of Emacs. I like the feature that allows you to select a word in the source code and have all the other occurrences of this term highlighted in the scrollbar. I also found myself using the debugger much more often because it is so easy. What really made me to switch from Emacs to Eclipse for one of my new larger project, was the possibility to setup the key bindings to match that of Emacs. This way I get the best of both worlds - the key bindings I use without thinking and the ease of use of Eclipse and Pydev.

Wing IDE


Some time ago I stumbled upon an article about Python IDEs which mentioned Wing IDE. Because Wingware offers a free license for open source developers (kudos for such support of the community), I decided to give it a try for BKChem programming. I found the IDE to be very intuitive and similar in many ways to Pydev. One of the distinguishing features of Wing IDE is its lightweight nature. While Eclipse with 5-10 opened Python files takes about 250 MB of my computers memory, Wing IDE only needs 90 MB. Also the startup and closing times are much lower with Wing IDE. Unfortunately I was not able to find a way to emulate the feature I described above that allows quick jumps to other occurrences of the same term in a file. On the other hand, Wing IDE contains a useful feature called the "Source Assistant" which offers you instant information about an object on which you place the cursor. This is very useful, especially for built-in functions.

My (personal) conclusion


All in all, I found both Pydev and Wing IDE quite useful. For now, I will stick with Pydev (and Emacs for small scripts), mostly because I do both open source and commercial closed source programming and it would be inconvenient to switch between tools for each type of program. On the other hand, Wing IDE is also very nice and the price even for commercial license is modest.