Komodo Edit vs Komodo IDE
Komodo Edit is an free dynamic language editor put out by Active State, while Komodo IDE is Active State’s commercial dynamic language IDE. The two share a common project system, so although I had installed and used Komodo Edit first, when installed Komodo IDE and opened it for the first time it automatically loaded the project I had created in Komodo Edit. The most immediately apparent different between the two regarding Python development is that IDE has a debugger and Edit does not. The next most immediately apparent difference between the two is that IDE has a Code (browsing) tool window and Edit does not.
Komodo vs PyScripter vs WingIDE – Goto Definition and Code Completion
Goto definition support appears to be identical between the two Komodo variants, but it isn’t as good as the free PyScripter or the commercial WingIDE Pro. The inability to find definitions as well as PyScripter or WingIDE also means that the Komodo variant’s code completion is not on par either. Once case that didn’t work for Komodo was actually quite simple. I have a Camera class defined in one file and its made use of in another file. The use is quite standard, simply camera = Camera(…), yet the two Komodo variants could not find the definition.
When I was initially evaluating Python IDEs and editors, one of my top criteria was that goto definition worked well and I found the best ones to be WingIDE and PyScripter with WingIDE being the better of the two.
With that said, I’ve been frequently finding that goto definition and code completion were not available throughout much of my code in even in WingIDE and PyScripter as my code makes use of a lot of the dynamic features the Python language and thus making it difficult–although I don’t think impossible for goto definition with a disambiguation dialog ala the decent C++ editors–to determine types at design time via static analysis. So perhaps I overemphasized that particular feature in my initial evaluations.
Komodo vs PyScripter vs WingIDE – Find and Replace
Both Komodo variant’s find and replace feature work the same, and, as with WingIDE, they work as I would expect of modern IDE. PyScripter is the lone standout regarding Find and Replace being deficient. I previously posted on that subject in detail here.
Komodo vs PyScripter vs WingIDE – Running and Debugging
Komodo IDE’s debugger has “feature” that it only runs/debugs the python file that is the currently active document. While there are times when this is definitely convenience, when you are working with an application comprised of many files in different directories, having to switch the open file every time you want to run/debug is quite annoying. WingIDE lets you specify which file is currently the main file from the right click menu in its project explorer, and you can also tell it to run the current file rather then the file that is currently tagged as main. PyScripter is in between the two. When you run/debug from the main debug menu (or the keyboard shortcuts bound to those menu items) it runs/debugs the current file, but it also allows you to specify run configurations that show up in the project explorer and have right click menus that let you run that configuration rather then the current file.
UPDATE: While debugging Komodo IDE does not show you the current value of any variable if you mouse hover over it. Both PyScripter and WingIDE do so to the best of their ability. Also Komodo IDE does not handle non-standard numerical types well at all such as come when using numpy. If you sum an array comprised of numpy.int32 you get a numpy.int32 and rather then showing you the value of this the best Komodo IDE can do is show you an array of four single character strings, thus you first have to convert the characters into hex then string them together in the correct order to get the actual number. Neither PyScripter or WingIDE have this issue and they are both able to show you the content of a numpy.array as well.
So I give WingIDE the top mark for debugging, followed closely by PyScripter, with Komodo IDE trailing far behind.