Everybody has their own preferred environment for writing code. Some prefer Eclipse, others Emacs, and still others just plain old vi or notepad.
For each of us, we find ourselves looking at our tools from time to time, wondering how we can use them more effectively. When I made the switch to Python as my primary choice of programming language, the question came up for me: Is there a better way to write and debug my code?
Taking a look at the choices out there made me less than happy. Eclipse is very heavily Java based and oriented. Every Java developer I've ever spoken with swears by Eclipse. If you're writing Java, and not using Eclipse, chances are you're not getting the most out of your tools.
As good as Eclipse is for Java, it's support for other languages has never felt right. Every time I've tried, I've found myself frustrated by what it didn't do. Other languages work, but not nearly as well. Without even trying, I am 100% convinced that Eclipse is a bad choice for doing Python development, just because of how bad it was for C, C++, and PHP when I tried them.
I've been a ViM user for about 10 years. But ViM never quite made it to a full IDE for me. Add in the dynamic nature of Python, and ViM couldn't keep up. It had no way of knowing what a given object was, so I couldn't get features like autocomplete working. I've loved ViM for years, but ViM as Python IDE just didn't do it.
Emacs is a whole different beast. It might well be great for Python, I don't know yet. I've just switched to being an Emacs user (and I'll discuss why I switched tomorrow), and am still learning everything. As such, I'll not comment on what it can and cannot do.
Before I made that switch, though, by over a year, I had been looking for a quality Python IDE. I found a thread over on Slashdot speaking about Python IDEs, and took a look through them.
IDLE was too simplistic. PIDA looks good, embeds ViM, but didn't run everywhere I wanted it to (On occasion, I work on Windows, and need my IDE able to run there when I do). Eric is another good looking one, and is my second choice. My only issue with Eric is what feels like extreme clutter on the screen at startup.
I knew that Eric could be the right choice, but I wanted to see the other choice I'd found in that thread first, before I started working with Eric. I'm very glad that I did. The Wingware IDE might be the best money I have ever spent on software (considering that I rarely use proprietary software, favoring OSS even when the proprietary might well be better, that's saying something).
The interface starts out clean and simple. The initial opening screen walks you through a tutorial, teaching you the basics of using it. And then it sets you loose. You get all the features you would even think to ask for and then some.
Of course, you've got the standard debug mode. You also are able to change variables using the debug probe. Conditional breakpoints, normal breakpoints, exception catching (allowing you to look through the different points of the stack trace to see what the various values are), a Python shell that features tab completion, a project search, version control system integration, test running, docstring display, and tab completion of method and variable names. Yes, that last feature works, though sometimes you have to give a hint to Wing IDE by specifying an isinstance() call.
All of those are common features, though. If you're using an IDE that doesn't have that, you're probably using an IDE that is still in beta. Some uncommon features include remote debugging (which is very useful when debugging a WSGI application), debugging of various server type apps (Django, TurboGears, Zope, Plone, Google App Engine), support for multiple GUI libraries (wxPython, PyGTK, PyQT), support for other framework (Twisted, Blender).
And, lastly, a very uncommon feature: Wingware is cross platform. You can get it for Windows, Linux, and Mac. All of them work.
And that's just the application. The company itself maintains a mailing list in which they actively participate. Every question I've seen come across the list in the past several months always included at least one Wingware support person replying. They listen to their customers, and use the mailing list to get ideas for what to put into the next release.
If you go for the Pro version, you get access to their source code. You can write your own plugins. They'll even provide help by answering your questions on the mailing list for dealing with issues in writing that plugin.
All in all, this is the best money I've ever spent on any software program. I can't recommend them enough.