I have been generously granted a Wing IDE license for my hobby programming on Analyzarr ( http://www.github.com/msarahan/analyzarr ). It has taken me a while, but I owe this review to the generosity of WingWare.

First off, I have been programming python for several years now. I have always used only a combination of a text editor and an interactive prompt (IPython, especially). I'm writing this review as my first experience with a Python IDE.

In my new job, I have been using visual studio for C++ programming. I have gotten used to handy things like debugging tools. I'm sure there are ways to do this in Python, but Visual Studio makes it, well, visual. In IPython, I rather used the pdb magic call to turn on automatic pdb calling. It was of mixed use, probably because I didn't know how to use it. I was very excited to try Wing's debugging facilities.

Before I get ahead of myself, let me start where I should start, and that is first with a description of my system, followed shortly by the tutorial.

I have Ubuntu 12.04 x64, running on an AMD platform. I am using Enthought's EPD distribution, to which I subscribe (it is well worth it.) That gives me Python 2.7, and several up-to-date scientific libraries.

Tutorial:

  • A lot of effort obviously went into this. It is very detailed, and it walks you through nicely.
  • I encountered a crash when setting my python path. I repeated it twice, then gave up. I don't use pythonpath anyway. Rather, I generally install my code in development mode using something like 'pip install -e ./' from my source folder. I hope this won't be a problem down the road...
  • Completion/"Source Assistant" - this thing is great! Having the docstrings right next to the editor, along with links to function declarations? This is fantastic! I'm left wishing for a way to jump back to the part I was just editing, before I clicked the link to jump to a function definition
  • Debugging in the tutorial: I crashed again.
  • Debugging, attempt 2: OK, now I encounter a problem with the path_example import. There's a helpful comment explaining that this won't work if you don't have the PYTHONPATH set from earlier in the tutorial. Very nice of them to not let users wonder about this!
  • Well, I'd really like to set that PYTHONPATH, but again, I'm bombing out. I'm resorting to just copying the path_example.py file from subfolder into the folder with example1.py.
  • OK, on with debugging. Breakpoints. Yes. This often exactly what I want when I'm trying to figure out an annoying bug. But wait, things get better
  • When things go wrong in Python, you get a traceback. It tells you the locations in all of the files up the call chain where things went wrong. It's very useful for tracking down bugs, but here's the hitch - if you have a bug in your code that is messing up someone else's code, then the last error is not obvious. Wing really shines here - in its exceptions view, you can navigate that whole call stack, jumping to the source where the exception occurred. Very nice!
  • Debugging just gets better! You can enter code at breakpoints, up to even redefining functions. As the tutorial states, when a bug depends on program state, you don't always want to start from the beginning. Instead, you can fix the bug, test it, and move on. All without restarting the potentially lengthy process leading up to this point.
  • Lots of shortcuts for matching parentheses, jumping around, and generally getting lost in unimaginably useful ways.

Wing looks like a great environment, and I'm eager to get my feet wet. I might post again soon on my experience using it to actually replace emacs/IPython as my development platform.