For September's meeting, the Utah Python User Group hosted an IDE shootout. 5 presenters reviewed 6 IDEs:
(The windows version was tested for all but Eric3, which was tested on Linux. Eric3 is based on Qt, which basically means you can't run it on Windows unless you've shelled out $$$ for a commerical Qt license, since there is no GPL version of Qt for Windows. Yes, there's Qt Free, but that's not exactly production-ready software.) Perhaps the most notable IDEs not included are SPE and DrPython. Alas, nobody had time to review these, but if you're looking for a free IDE perhaps you should include these in your search, because PyDev was the only one of the 3 free ones that we'd consider using. And if you aren't already familiar with Eclipse, PyDev probably isn't for you. (It's worth pointing out, though, that the personal editions of Komodo and Wing are only $30 and $35, respectively, and Wingware lets open-source projects use its IDE for free.) This review first gives a comparison of features that I consider important, then gives some more subjective material for each IDE to indicate the flavor of our experience with it. (The pronoun "we" in this post refers to the UPyUG, but "I" is always Jonathan Ellis.)
EditingAll reviewed editors provided basics like syntax highlighting. These features are not included in the comparison charts; no modern IDE should be without them. |
PyDev | Eric3 | Boa Constructor | BlackAdder | Komodo | Wing IDE | |
---|---|---|---|---|---|---|
Keyboard Macros | No | Yes | No | No | Yes | Yes |
Configurable Keybindings | Yes | No | No | No | Yes | Yes* |
*Very weak UI; expect to do a lot of manual browsing | ||||||
Tab Guides | No | Yes | Yes | No | Yes | Yes |
Smart Indent* | No | No | No | No | Yes | Yes |
*Knows to de-indent a level after break/return/etc. statements | ||||||
Code completion | Decent | Useless | No | Vim-style* | Good | Excellent |
*Can guess symbols already present in the current document | ||||||
Call tips | No | Mostly broken | No | No | Yes | Yes* |
*"Source Assistant" provides calltips and docs in a separate panel | ||||||
"Go to definition" for python symbols | No | No | No | No | No* | Yes |
*"Find symbol" is basically a find-in-files text search | ||||||
Templates | Yes | Yes | No | No | Yes | Yes |
Source Control Integration | Eclipse* | CVS** | No | No | CVS/Perforce/SVN | CVS |
*CVS is standard; plugin availability varies for others | ||||||
**SVN is ostensibly supported, but didn't work for us | ||||||
GUI Builder | No | No | Wx | Qt | Tk | No |
Emacs emulation* | Poor | No | No | No | Poor | Good |
*None yet support VI(m) emulation -- sorry! |
Debugger
PyDev | Eric3 | Boa Constructor | BlackAdder | Komodo | Wing IDE | |
---|---|---|---|---|---|---|
Conditional breakpoints | No | Yes | No | No | Yes | Yes |
Evaluate arbitrary expressions | Yes | No | No | No | Yes | Yes |
Debug external programs* | No | Yes | No | No | Yes | Yes |
*E.g., a script processing a web server request |
Miscellaneous
PyDev | Eric3 | Boa Constructor | BlackAdder | Komodo | Wing IDE | |
---|---|---|---|---|---|---|
Documentation | Virtually none | Virtually none | Virtually none | Poor | Excellent | Good |
Unique features | PyLint integration; "extract method" refactoring | ?* | Regular expression builder | ?* | Multilanguage; save macros; regular expression builder | Source Assistant; scriptable with python |
*I didn't notice anything worth mentioning |
ImpressionsPyDevIf you like Eclipse, PyDev is a decent choice (provided, of course, that you have a suitably beefy machine). If you are unfamiliar with Eclipse, good luck with the learning curve; you'll need it. PyDev is the only IDE reviewed where features such as code completion will not work unless you add the .py files to the PyDev project. "Extract method" is cool, but limited. Perhaps the biggest drawback is, it doesn't know its limits and will happily perform invalid refactorings. Code completion is the best of the free IDEs we reviewed. Eric3Eric3 has a lot of good features. These are overshadowed by two problems: a horribly cluttered UI, with a correspondingly painful initial experience, and the worst implementation of code completion I have ever seen. You can choose from two kinds of code completion: completion for the stdlib, and completion for your current project. You cannot have both at once. "What the hell?" I hear you say. Yes, but it gets worse: say you decide to pick the stdlib. You write, "import os; os." and wait expectantly for the completion. You get... a list of all symbols anywhere in the stdlib! Or pretty close to it. Wow. Calltips are a similar mess. If you write "os.path.exists(", you may get the calltip for os.path.exists, or you may get the calltip for any other exists method. Eric3 is documented as well as the other open-source projects we looked at, which is to say, there are some screenshots and a mailing list. Boa ConstructorSupposedly, Boa Constructor supports code completion and call tips, which you can invoke with control-space. This didn't work for us. At all. We didn't spend too much time trying to figure out what was wrong, though, because the worst part of the experience was how amazingly unstable Boa Constructor is. (Well, "amazingly" except to anyone who has used earlier versions of BC, I guess. Apparently this isn't new with the 0.4.4 release.) It would corrupt dialogs, screw up components such that they had to be deleted and re-added, and crash to the desktop. I hadn't considered rating IDEs on MTBF before, but Boa Constructor made me think hard about it. Oh, and if you try BC and your first component on the frame sizes to take up the entire frame once you run it -- that's normal, apparently. Just add more components and they will start behaving. Until it crashes. BlackAdderThe only IDE here that doesn't support code folding, BlackAdder fails in more important ways as well. (Hey, I almost never bother with folding even in other IDEs.) Most glaringly, it was the only reviewed IDE that we could not get to run a test program; it complained instead about DLL import problems. Possibly this is due to us using PyQT 3.1.14 instead of 3.7, but the former is the only one available to download from TheKompany's site. (Trying to install on Linux resulted in even less success; we never did manage to get it to run.) BlackAdder also has the uniquely annoying trialware behavior of closing itself after 10 minutes no matter what you are doing. (The description on thekompany.com, which says that saving is disabled, is incorrect -- you do get to save your work.) Vim-style code completion is pretty weak stuff when you're competing with companies and free projects that do the real thing. Editor doesn't obey normal conventions like double-clicking on an option to pick it and close the dialog or re-opening a file when it changes on disk. The only documentation is a 35-page PDF, about 18 pages of which is actually reference material. The rest is taken up by installation instructions (see above for how helpful this was to us), a tutorial (fairly useful) and a guide to QT Designer. It's hard to complain about the reference material since there really aren't a whole lot of features to document, but it's still underwhelming. (No mention is made of code completion, for instance; I never would have known about it if I hadn't seen a reference in some Usenet thread.) BlackAdder is the oldest IDE reviewed here (1.1 was released in 2003), which speaks in more than one way to its relative priority for TheKompany. I'd be embarassed to leave a product with this level of problems in my store. KomodoKomodo is a good IDE, but it has rough edges. Its code completion engine is prone to refusing to help out in certain files. I couldn't discern any pattern in the set of files it couldn't figure out. It also occasionally reports parse errors on valid code; this, for instance, is valid Python 2.4 (which Komodo 3.1 supports), but even in a blank file results in a parse error: other_space_used = sum(max(v.space_used, v.pending_space_used) for (k, v) in u._machines.items() if k != self.machineid) Another one: Alt-b cannot be rebound to anything. I filed a bug report against Komodo 3.0 for this over a year ago, and it's still there in 3.1. (I also contributed to a report listing ways to make Komodo's emacs mode not suck quite so much out-of-the-box. This hasn't improved since 3.0.1, either. I guess it's fair to say I'm not very impressed with ActiveState's support system.) Probably the biggest win for Komodo is its support for multiple languages. If you're not lucky enough to only code in Python (I am), this might be the killer feature that makes you an ActiveState customer. WingWing shares with PyDev the distinction of being the most heavyweight IDE in this review, in the sense of needing a fairly beefy CPU to remain snappy. (Two data points: on my 1.6 GHz Pentium M with 512 MB of ram, it's fine; on my 900 MHz P4 -- it's a long story -- with 512 MB, it's noticably sluggish.) This may be due to the bulk of Wing itself being written in Python. I called out BlackAdder for having an obnoxious trial behavior, so I should probably point out that Wing has the least obnoxious trial. You don't have to enter your email address (BlackAdder/Komodo) or download and run an executable license key (Komodo); you just install the software and Wing asks if you would like it to contact wingware.com to auto-install a trial key. Slick. Wing is the only IDE here to give you code completion for more than function and class variables; it also completes keywords, modules (in import statements), and locals. This is more useful than it sounds; once you get used to it, you won't want to go back. (For my .NET readers: Wing does Whidbey-style completion.) Wing's Source Assistant is nice, but it's distracting to have to look at a different panel to get call tip information. Better to have both. Wing is the most polished of the IDEs here. I suspect this is due to the Wingware developers "dogfooding," using Wing to develop Wing. There are fewer oversights and more of the small touches that indicate quality. A minor exception is that the documentation has become outdated in some places. Let me also note that if you tried and rejected Wing 1.1 back in the day, you should give Wing 2.0 another look. I fall into that camp myself; on Windows, at least, Wing 1.1 was horribly ugly. I couldn't stand looking at it. Wing 2.0 is much, much easier on the eyes. In fact, almost all the IDEs we reviewed look pretty good. Eric3's cluttered look is the only exception. When I've had occasion to send several questions ("How can I make enter autocomplete, as well as tab?") and suggestions to the Wing IDE mailing list, Wingware has responded promptly. ("Use control to select multiple keys in the autocomplete dialog." Okay, I guess that was a stupid question.) ConclusionEarly last year, I bought Komodo Personal edition for $30. That's a pretty good deal, especially when you consider its support for other languages (Perl, PHP, and TCL) as well as Python. I still think Komodo Personal is a good deal, but today I would go with Wingware Personal ($35) instead, primarily on the strength of its better code completion support, "Go to definition" feature, and Source Assistant. Superior Emacs emulation (superior to just about any other non-Emacs editor I've ever used, actually; I suspect Wingware has at least one Emacs refugee) seals the deal. A few days ago, I ordered Wing IDE Professional (paid for by my boss). If you need an integrated GUI builder, or you have an older machine, Komodo remains a good choice, although not many people these days would pick Tk as their first choice for a GUI toolkit. Of the free choices, PyDev is the clear choice if you have Eclipse experience. If not, well, the situation isn't pretty. Perhaps you'll have better luck with one of the IDEs we didn't review here. AddendumActiveState, TheKompany, and Wingware were all kind enough to donate a license for their respective IDEs to the Utah Python User Group as door prizes for the meeting where these reviews were conducted. (None of the reviewers received any of these.) We thank these companies for their support. (Sept 22: Shawn Gordon of TheKompany appears to have decided not to honor his commitment here.) Thanks also to all our reviewers. Alphabetically, these are Brent Hughes, Byron Clark, Jason Reusch, Jonathan Ellis, and Justin Wilson. |
Update Sept 10: noted that Eric3's svn support didn't work for us
Comments
Please, are that tools able to complete properly the following code ?
class test:
def __init__ (self, name, value):
setattr(self, name, value)
def test (self):
setattr(self, "test2", self.test)
a = test("a", "b")
a. => ['a', 'test']
a.test()
a. => ['a', 'test', 'test2']
I don't think they're able to complete that...
Its sort of a thin gui binding together commonly used existing tools. Including a GTK glade compatible gui editor.
The windows version was tested for all but Eric3, which was tested on Linux. Eric3 is based on Qt, which basically means you can't run it on Windows unless you've shelled out $$$ for a commerical Qt license, since there is no GPL version of Qt for Windows. Yes, there's Qt Free, but that's not exactly production-ready software.
"""
Unintentional (or misinformed) FUD?
One doesn't need a commercial licence to _run_ Qt apps on Windows. The qt.dll (whatever its name) can be distributed with an application without requiring a fee or limb sacrifice from the user.
What is needed is a licence in order to build PyQt, for the _creator_ of PyQt (once again, not for the users). And I think there _is_ a WinPyQt already available (and free of charge).
Anyways, all this will change with Qt4, which comes GPL-ed for windows too. And yes Qt4 is already much better than Qt3 was. Once again, all that is needed is a PyQt4Win.
Please install Python2.4(.1) and PyQtGPL prior to this software!
Build by eric..at..vanrietpaap..dot..nl
The latest version of this executable can be downloaded from http://pythonqt.vanrietpaap.nl
Eric3 snapshot 2005-04-10
http://www.quadgames.com/download/pythonqt/
http://www.zeusedit.com/lookmain.html
Based on your list here is how it adds up:
Keyboard Macros - Yes
Configurable Keybindings - Yes
Tab Guides - Yes
Smart Indent - Yes
Knows to de-indent - No (manual de-indent only)
Code completion - Yes/No **
Can guess symbols - No
Call tips - Yes/No **
Source Assistant - No
Go to definition - Yes/No **
Find symbol - Yes/No **
Templates - Yes
Source Control Integration - Yes (CVS, SCC) No SVN
CVS is standard - Yes
SVN is support - No
GUI Builder - No
Emacs emulation - Yes
VI(m) emulation - No
Debugger - Only limited debugger support
Documentation - Yes
Unique features - scriptable with python
Unique features - code folding for python
** Based on ctags information
Both Komodo and Wing were 'good enough' but didn't seem to offer enough to me to justify the higher-priced developer licenses.
It is a shame that SPE was missed from the above table, I think it is more stable than some of the other tools - I was happy to switch into the environment and I've recently donated money to the development fund.
I recommend SPE - it has rough edges but development is on-going and bugs seem to be squashed quickly.
Here's how it stacks up:
Keyboard Macros - Yes
Configurable Keybindings - Yes*
Tab Guides - Yes
Smart Indent - Yes
Knows to de-indent - No (manual de-indent only)
Code completion - Yes
Can guess symbols - ?
Call tips - Yes
Source Assistant - ?
Go to definition - ?
Find symbol - ?
Templates - ?
Source Control Integration - No
GUI Builder - wxGlade and XRCed
Emacs emulation - Yes
VI(m) emulation - No
Debugger - Yes
Documentation - Yes, + tutorial
Unique features - UML diagram of your classes
Unique features - code folding
Unique features - Kiki regex console and PyChecker
? I don't know the answer to these
* you can define your own menus & toolbar buttons - but this feature is deprecated
Keyboard Macros - Yes
Configurable Keybindings - Yes
Tab Guides - Yes
Smart Indent - Yes
Knows to de-indent - Yes
Code completion - No
Can guess symbols - No (though I feel like there's some minor mode that some people love in Emacs that does this; I've never used it, though)
Call tips - No
Go to definition - I think there's something with oo-browser that does this, but I've never tried it
Find symbol - I believe BRM (bicycle repair man) can provide this...? There's several BRM-provided refactoring features (it would be interesting, actually, to know which of these IDEs use BRM, and which have their own refactoring support)
Templates - No
Source Control Integration - Yes
GUI Builder - No
Emacs emulation - Yes ;)
VI(m) emulation - Yes
Debugger - Yes (pdb integration, haven't tried it)
Documentation - Excellent
Unique features - a whole bunch I probably don't know about
It would be nice, though, if there was a document out there describing a complete stack of modes, configuration, and development practices that work well with Emacs.
I've heard that python-mode for Gnu Emacs 22 is much improved, but it's not compatible with v21 emacsen and I have better things to do than try to build that beast from source. :)
It's just sad that nothing else seems to be taking up the torch when it comes to the Emacs UI, which remains one of the best editing UIs out there.
I'm surprised Emacs 22 has features that couldn't be backported to 21 easily enough...? I thought it was all in elisp?
If someone made a self-proclaimed Emacs clone in Python, I would totally use that, even if it sucked. So long as they mean Emacs-the-general-idea, not just Emacs-the-keybindings.
I suppose VIM would be a multilanguage example. I've never really used it, the vi thing scared me off. And, honestly, I like the long-running expectation of an Emacs session (the very thing othr people hate). But it's very possible I simply am not giving VIM the chance it deserves. There's a Python VIM-based IDE out there, isn't there? I forget the name.
But anyway, there's more programmers now than 20 years ago, and yet we're still all writing the same freakin' text files, so we (a) ought to be really good at this, and (b) don't need the entire programming community to build this, and (c) can write most of the stuff in a single language and avoid a lot of heartaches^Wheadaches.
I don't write GUI apps, except for one or two experiments in the past, so I don't know what it involves. But Emacs doesn't seem hard to me, except for all the extensions, which are the kind of thing I do know how to write, and I think that part is doable. Postgres supports multiple languages because it's written in C, and that's definitely not what I want.
VIM supports multiple extension languages but (a) not nearly enough of the internals are exposed for this to be useful and (b) it doesn't ship with any but "vimscript" (whatever the real name is) enabled by default, so effectively only vimscript is supported.
PostgreSQL is written in C, but nothing prevents a primarily python|ruby|whatever language from supporting other extension languages.
Disclosure: I am testing pre-releases of Wing 2.1 for the VIM bindings. There certianly still are rough edges and missing bindings, but they stand out because I feel I am in VIM all the time now. :)
As for the anonymous post about code completion: no IDE is going to autocomplete dynamically generated attributes due to the possible side-effects of having to run the code to find these attributes.
Wing works around this by interpreting isinstance calls in the code as hints. If you need auto-completion to certain types, simply insert a 'assert isinstance()' line.
1) eric3: You can turn off most of those icons
2) Eric3: Autoindent can be turned on for :
3) Would be nice to see drpython reviewed
4) One more thing - in a BlackAdder license is the included distribution rights to the QT library. Which is much cheaper than the same license purchased directly from Trolltech.
Oh I use PythonWin on occasion as well as ipython (not an ide).
Anthony
Got a Python IDE review myself I did recently that I thought you may be interested in. Take a look if you get a chance - I'm always up for some healthy discussion.
http://www.straw-dogs.co.uk/tao-blog/python-ide-review
Another plus-point for pydev/eclipse is it's first-rate SVN integration. Probably the best out there.
Since eclipse can also handle C/C++ files (when the CDT plugins are installed), this is useful for mixed C++/python projects. Pydev also has full Jython support (although I've never used it).
I think midtoad's table summarize rather well the issue. I'd add to that table that the "go to definition" does work for SPE.
As well, for Emacs users that split their screen with several buffers, a "comfortable" setup might be the "single with tabs (mac, linux, windows)" document interface that allows fast switching between documents (if your window manager allows you to; with fvwm "Alt + Tab").
In addition, SPE is fast (much faster in not-the-latest-hardware than wingware's Wing IDE), clean, and to the point.
Midtoad, however, writes that Emacs emulation is possible: is this through a "by-hand" editing of the keybindings or is there something I am missing?
Ramón
-Pete
Eclipse does have a bit of a learning curve. However, once you figure out the essence of what is going on, you'll find that Eclipse is much more than "just an IDE". Contrasted with most of the environments that were reviewed, there is real documentation for Eclipse in general.
As an aside, I think Eclipse's CVS/SVN integration is just about second to none. I find myself sometimes using Eclipse just to manage various projects.
## just in case you do not have yet:
import rlcompleter, readline
readline.parse_and_bind("tab: complete")
## end
>>> import sys
>>> sys."now push TAB key"
gives you list of methods/attributes of "sys" module.
Matus
i think it is one of the best free IDE for python available nowdays
As noted above Most of the attractive features that it offers are only available in the profesional version according to the wingware personal / pro comparison chart. On the otherhand it looks like some really nice features have been added such as svn and perforce source control integration that in the mix might justify the $170 price tag.
On the other hand can anyone now see a reason to buy thier personal edition? It looks to me like it lack many features that are in may of the free Python ide's.
Anyway UPUG did such a good job with this review. Thank you very much. Are thier plans for a new shootout ? ? ?
Maybe Wing with give you a free pro license doorprize.
; )
On the basics, jEdit covers it all. It has good syntax highlighting (in lots of languages), several styles of code folding, and block indent/dedent. Built into jEdit is block commenting (either line-by-line or with begin/end comment delimiters for those languages that use them). There is not any standard shortcut to remove comments from a block, but it would not be hard to write a macro to do so. Actually, in general, the scriptability of jEdit is one of its nicest features.
http://www-128.ibm.com/developerworks/linux/library/l-cpyide/#main
Do you really have better things to do than try to build it from source? LOL
it support virtually any language so
eclipse rocks.
bir2su.blogspot.com
It's basically a light-weight IDE.
* Has syntax-highlighting (which they all should)
* Doesn't have code-completion or "intellisense" dropdown to clue you in on the syntax of a function you're using (really miss this the most)
* Has an internal Python shell & Console shell, to let you debug your script, or ref Python commands with the PyShell's help function (also has a link to a web-book for Python help).
* I think it has auto-tabbing (never really noticed, but I think it does)
* I think you can do macros and other things ... I haven't really used many other features of it, as I'm mostly a hobbyist programmer with Python.
* One thing I find annoying is that it translates the DEL key on the numpad into a typed symbol on the screen instead of deleting. This is annoying. Also, CTRL+arrow keys to jump around the text seems to be funky. It's like it wants to jump to parts of text that's un-intuitive, depending on what character's it's jumping over. It just seems annoying at times.
I mostly use it for simple script development that I'm going to "module" into its own .py or .pyc file, then call from some other main script. The built in Py shell helps with debugging, although the DrPython program itself also annoys you with its own debugging pop-up. (You can tell when your code is failing, because it takes long to run than normal, then DrPython pops up it's debug message, which is archaic to understand sometimes, and when you close it, the Py Shell displays its debug message, which is much more clear/concise.)
DrPython was built using Python, so it might run a little slower on older machines. But, as a lite-weight IDE, it's not bad...about one step up from Gedit or Kedit on Linux.
I tried Eric3, and frankly got turned off by the clutter of buttons. I understand they all have their function, but I'm sure some could get hidden, or compartmented into hideable / dockable toolbars so the user could display only what they needed, freeing up some work area.
Also tried Boa Constructor, and just couldn't get into it. I tried Pida, but it just didn't stick with me. Didn't want to do Eclipse, so never tried it. I tried Mono, which supposedly has Python support now, but couldn't figure out how to get it going. Guess I wasn't interested in using an IDE that took a book just to figure out how to use. Probably why I stuck with DrPython...easy to get going and gets the job done.