Python IDE Frustration

By , May 13, 2010 9:22 pm

I didn’t think I was looking for a lot in an IDE. Turns out what I want is impossibly hard to find.

In the past 6 months I’ve tried (or tried to try):

  • Komodo Edit
  • Eclipse w/ PyDev
  • PyCharm (from the first EAP build to… yesterday)
  • Wingware
  • Textmate

Wingware

First, let’s get Wingware out of the way. I’m on a Mac, and if you’re not going to develop for the Mac, I’m not going to pay you hundreds of dollars for your product. Period. I don’t even use free software that requires X11. Lemme know when you figure out that coders like Macs and I’ll try Wingware.

Komodo Edit

Well, I wanted to try the IDE but I downloaded it, launched it once for 5 minutes (maybe less), forgot about it, and now my trial is over. I’ll email sales about this tomorrow. In the meantime, I use Komodo Edit.

Komodo Edit is pretty nice. One thing I like about it is that it doesn’t really go overboard forcing its world view down my throat. If I’m working on bunny, which is a one-file Python project I keep in a git repository, I don’t have to figure out their system for managing projects. I can just “Open File” and use it as a text editor.

It has “ok” support for Vi key bindings, and it’s not a plugin: it’s built in. The support has some annoying limitations, but for about 85% of what I need it to do it’s fine. One big annoyance is that I can’t write out a file and assign it a name (e.g. ‘:w /some/filename.txt’). It’s not supported.

Komodo Edit, unless I missed it, doesn’t integrate with Git, and doesn’t offer a Python console. Its capabilities in the area of collaboration in general are weak. I don’t absolutely have to have them, but things like that are nice for keeping focused and not having to switch away from the window to do anything else, so ideally I could get an IDE that has this. I believe Komodo IDE has these things, so I’m looking forward to trying it out.

Komodo is pretty quick compared to most IDEs, and has always been rock solid stable for me on both Mac and Linux, so if I’m not in the mood to use Vim, or I need to work on lots of files at once, Komodo Edit is currently my ‘go-to’ IDE.

PyCharm

PyCharm doesn’t have an officially supported release. I’ve been using Early Adopter Previews since the first one, though. When it’s finally stable I’m definitely going to revisit it, because to be honest… it’s kinda dreamy.

Git integration is very good. I used it with GitHub without incident for some time, but these are early adopter releases, and things happen: two separate EAP releases of PyCharm made my project files completely disappear without warning, error, or any indication that anything was wrong at all. Of course, this is git, so running ‘git checkout -f’ brought things back just fine, but it’s unsettling, so now I’m just waiting for the EAP to be over with and I’ll check it out when it’s done.

I think for the most part, PyCharm nails it. This is the IDE I want to be using assuming the stability issues are worked out (and I don’t have reason to believe they won’t be). It gives me a Python console, VCS integration, a good class and project browser, some nice code analytics, and more complex syntax checking that “just works” than I’ve seen elsewhere. It’s a pretty handsome, very intuitive IDE, and it leverages an underlying platform whose plugins are available to PyCharm users as well, so my Vim keys are there (and, by the way, the IDEAVim plugin is the most advanced Vim support I’ve seen in any IDE, hands down).

Eclipse with PyDev

One thing I learned from using PyCharm and Eclipse is that where tools like this are concerned, I really prefer a specialized tool to a generic one with plugins layered on to provide the necessary functionality. Eclipse with PyDev really feels to me like a Java IDE that you have to spend time laboriously chiseling, drilling, and hammering to get it to do what you need if you’re not a Java developer. The configuration is extremely unintuitive, with a profuse array of dialogs, menus, options, options about options and menus, menus about menus and options… it never seems to end.

All told, I’ve probably spent the equivalent of 2 working days mucking with Eclipse configuration, and I’ve only been able to get it “pretty close” to where I want it. The Java-loving underpinnings of the Eclipse platform simply cannot be suppressed, while things I had to layer on with plugins don’t show up in the expected places.

Add to this Eclipse’s world-view, which reads something like “there is no filesystem tree: only projects”, and you have a really damned annoying IDE. I’ve tried on and off for over a year to make friends with Eclipse because of the good things I hear about PyDev, but it just feels like a big hacky, duct-taped mess to me, and if PyCharm has proven anything to me, it’s that building a language specific IDE on an underlying platform devoted to Java doesn’t have to be like this. When I finally got it to some kind of usable point, and after going through the “fonts and colors” maze, it turns out the syntax highlighting isn’t really all that great!

A quick word about Vi key bindings in Eclipse: it’s not a pretty picture, but the best I’ve been able to find is a free tool called Vrapper. It’s not bad. I could get by with Vrapper, but I don’t believe it’s as mature and evolved as IDEAVim plugin in PyCharm.

So, I’ll probably turn back to Eclipse for Java development (I’m planning on taking on a personal Android project), but I think I’ve given up on it for anything not Java-related.

Vim

Vim is technically ‘just an editor’, but it has some nice benefits, and with the right plugins, it can technically do all of the things a fancy IDE can. I use the taglist plugin to provide the project and class browser functionality, and the kicker here is that you can actually switch to the browser pane, type ‘/’ and the object or member you’re looking for, and jump to it in a flash. It’s also the most complete Vim key binding implementation available ;-)

The big win for me in using Vim though is remote work. Though I’d rather do all of my coding locally, there are times when I really have to write code on remote machines, and I don’t want to go through the rigmarole of coding, pushing my changes, going to my terminal, pulling down the changes, testing, failing, fixing the code on my machine, pushing my changes, pulling my changes… ugh.

So why not just use Vim? I could do it. I’ve been using Vim for many years and am pretty good with it, but I just feel like separating my coding from my terminal whenever I can is a good thing. I don’t want my code to look like my terminal, nor do I want my terminal to look like my IDE theme. I’m SUPER picky about fonts and colors in my IDE, and I’m not that picky about them in my terminal. I also want the option of using my mouse while I’m coding, mostly to scroll, and getting that to work on a Mac in Terminal.app isn’t as simple as you might expect (and I’m not a fan of iTerm… and its ability to do this comes at a cost as well).

MacVim is nice, solves the separation of Terminal and IDE, and I might give it a more serious try, but let’s face it, it’s just not an IDE. Code completion is still going to be mediocre, the interface is still going to be terminal-ish… I just don’t know. One thing I really love though is the taglist plugin. I think if I could just find a way to embed a Python console along the bottom of MacVim I might be sold.

One thing I absolutely love about Vim, the thing that Vim gets right that none of the IDEs get is colorschemes: MacVim comes with like 20 or 30 colorschemes! And you can download more on the ‘net! The other IDEs must lump colorscheme information into the general preferences or something, because you can’t just download a colorscheme as far as I’ve seen. The IDE with the worst color/font configuration? Eclipse – the one all my Python brethren seem to rave about. That is so frustrating. Some day I’ll make it to PyCon and someone will show me the kool-aid I guess.

The Frustrating Conclusion

PyCharm isn’t soup yet, Wingware is all but ignoring the Mac platform, Eclipse is completely wrong for my brain and I don’t know how anyone uses it for Python development, Komodo Edit is rock solid but lacking features, and Komodo IDE is fairly pricey and a 30-day trial is always just really annoying (and I kinda doubt it beats PyCharm for Python-specific development). MacVim is a stand-in for a real IDE and it does the job, but I really want more… integration! I also don’t like maintaining the plugins and colorschemes and *rc files and ctags, and having to understand its language and all that.

I don’t cover them here, but I’ve tried a bunch of the Linux-specific Python IDEs as well, and I didn’t like a single one of them at all. At some point I’ll spend more time with those tools to see if I missed something crucial that, once learned, might make it hug my brain like a warm blanket (and make me consider running Linux on my desktop again, something I haven’t done on a regular ongoing basis in about 4 years).

So… I don’t really have an IDE yet. I *did* however just realize that the laptop I’m typing on right now has never had a Komodo IDE install, so I’m off to test it now. Wish me luck!

54 Responses to “Python IDE Frustration”

  1. Tim Knapp says:

    Hi Brian,

    I actually had almost given up on Eclipse when I found Aptana Studio (standalone edition). I appreciate it is just a rebundled version of Eclipse but the updating mechanism alone is worth the download. Simplifies that imho fairly ugly mechanism in bulk-standard Eclipse. Also doesn’t force you to have the default Java perspective by default and just feels more Python-friendly.

    -Tim

  2. Have you tried Oracle (ugh!) Netbeans? I have found Python support adequate. It’s better as a PHP and JavaScript editor, though (better refactoring, particularly rename!).

    If you need to code using many languages, it’s a good pick I think. The HTML/CSS editors provided are decent too.

    It has excellent builtin support for Mercurial. There’s also a plugin available for git.

    You might also want to check out Eric (http://eric-ide.python-projects.org/). I used it before moving to Netbeans. It’s a decent IDE and has some nice perks (nice Python plugins ie.). It felt a bit bloated to me, though (ok, Netbeans has some bloat too :) ).

    As mentioned vim is great. I find it enjoyable to use for some quick hackery. I probably should spend some effort “IDEfying” it some day. I’m sure there are a lot of hidden features in the app I don’t know about yet that make it really shine.

  3. Mike says:

    I feel your pain! I agree, PyCharm is looking very promising…

    For now, I’m enjoying the ropevim refactoring plugin (http://rope.sourceforge.net/ropevim.html)

  4. My IDE is TextMate. It’s an amazing editor, and most of my Python developer friends on a Mac use it. I use it with the terminal, and have a Pyflakes plugin that gives syntax validation on save.

    It’s not quite as advanced as some (e.g. no code completion, although I’ve integrated it with mr.igor (see PyPI) for a similar effect, and it can only do code browsers in a single module at a time), but it’s fast, slick and intuitive, like Python. ;)

  5. anony says:

    Aptana Studio is Eclipse-based and installs Pydev fine. It seems a bit slimmer, but I don’t think you get to avoid the project-orientation. Tried it?

  6. dertyp says:

    I’ve been using Komodo IDE for three years now, and have tried several other IDEs time and again. I’m doing web and desktop programming in Python and accasionally need to debug PHP code or HTTP headers.
    So far, nothing even remotely matches the features (JS debugger anyone?), speed and general experience it offers. It sure is pricy, but it’s well worth the money in my opinion.

  7. Zaki says:

    I’ve been getting some excellent mileage out Ulipad.
    http://code.google.com/p/ulipad/

    It has
    -pylint
    -column mode editing
    -Syntax check

    my previous favorite was spyderlib which as some very powerful numpy and matplotlib support.

  8. muyufan says:

    Python IS not c++ or java。
    A lot python coder donot need/like an IDE 。
    I use Programmer’s Notepad http://www.pnotepad.org/

  9. Noah Kantrowitz says:

    No comments on TextMate? I’m a devout TextMate user at home now struggling to find a suitable replacement on Windows to use at work. E seems the natural choice, but it is a pretty poor clone.

  10. ángel says:

    Have you tried boa constructor?

  11. Simon says:

    You want to have vim integrated with what? I use Vim integrated with pylint, sql shell, shell and python compiler – nicely works.
    For me Vim is much better than Eclipse – e.g. try to change color scheme in eclipse – such a real pain :)

  12. qp says:

    If you like Vim, Pida http://pida.co.uk/ might be worth checking out, too. Not that I’ve used it extensively, though.

  13. Juanra says:

    I went through a similar frustration and I ended up with Netbeans, I’m quite happy with it.

  14. tinti says:

    Netbeans, I am currently using it and it seems to be the best alternative to all mentioned of you.

  15. Gabreiele says:

    Python doesn’t really need an IDE, the boilerplate code is not so much and its dinamic features make difficult to “predict” what you need.

    I’ve searched a lot of IDEs, I ended up using emacs. What I miss is just a good code browser, but basically it has very good tools for VCSs (like merge with ediff) and much more.

  16. Ben says:

    I agree with you about pycharm – it’s probably the best out there.

    One thing you might want to try is aptana – it’s based on eclipse but feels just that bit more cohesive (especially if you’re doing web stuff).

    Ben

  17. anon says:

    Why not iterm? With iterm you get full mouse support (no cost I can see – just click “xterm mouse reoprting” option and “:se mouse=a” in vim, unix style immediate copy/right click paste with sensible double click url/file selection, 256 colors etc. None of this is possible with Terminal… – its just a terminal (so surely problem cant be with interface), its completely stable, and it has the features a modern terminal should (for me fonts look much better in iterm as well).

  18. adam says:

    I use netbeans with the early access python plugin and the jVi netbeans plugin. The jVi plugin is by far the closest Vi/Vim mode or plugin I have ever used with an IDE. It really brings the IDE and Vi/Vim worlds together! It just does what one expects!

  19. Winni says:

    Doesn’t Apple’s Xcode also support Python?

    I appears that there now even is a Python add-in for MonoDevelop, but I haven’t tried it myself yet.

    Personally, I use BBEdit, the commercial version of TextWrangler, for all the stuff that I don’t have a “proper” IDE for.

  20. Give Editra a try. It’s part of wxPython and seems to be a very promising project. http://editra.org/

  21. J says:

    Have you tried SPE? When I searched for python IDEs some time ago it was one of the better ones. Eclipse+Pydev felt too heavy, didn’t like Eric for some reason amd some startup projects where at the time too incomplete. With all that said I develop in vim…

  22. Zeevb says:

    Netbeans may be another ide you may look at, it has reasonable python support.

  23. Tim says:

    Have you tried SPE and/or Boa Constructore.
    I have used both on Windows and Linux. Both do run on OSX.
    I have been using Boa for the last 5 years.

    T

  24. Adam says:

    I bought Komodo IDE years ago and use it all the time. It has tons of features the Edit version doesn’t and, TBH, I’d much rather be using GitX and SmartGit to manage my files because Git doesn’t really work the same as previous source control.

    That’s just my 2c.

  25. Alec Koumjian says:

    I was in your exact same position. It’s not perfect, but I think you will like Spyder: http://code.google.com/p/spyderlib/

  26. aperson says:

    Geany! I don’t know of anything better for python.

  27. m0j0 says:

    Thanks to all for the comments. They reminded me of a few things I’d completely forgotten about, including Netbeans and Aptana. I’ve tried both in the past, and remember being pretty impressed with Netbeans at one point. I don’t remember why both of those fell off my radar.

    TextMate, I think, is a little slim for my needs, and it seemed to me when I tried it that in order to really exploit it you had to know lots of keyboard shortcuts or something, in which case I’ll just use vim. I also work on larger projects with lots of interaction between objects in various modules, so I’d like to be able to load and browse this stuff easily, so the ‘one module browsing at a time’ limitation would be bothersome.

    In my past tests, I really just didn’t see anything in TextMate that justified the cost, otherwise I’d happily spend the money.

    As for SPE and Boa, I’ve tried them on Linux, but I’ll be honest: the last time I tried them on Ubuntu (last October, approximately), one crashed, and the other failed to load at all or crashed on startup. I don’t remember SPE having a mac version available. If it doesn’t require X11 or lots of acrobatics to get installed (I do not use fink or macports, so those count as ‘acrobatics’) I’ll try it out!

    Some of the other things mentioned (Geany, Spyder, etc) I’ve never even heard of, so I’ll be checking those out – thanks!

    XCode is an enormous monster in my eyes, so I haven’t gone too far in trying to use it. Maybe I’ll look around for some “Python with XCode” demos or blog posts. If you know of some python-specific xcode tutorials or whatever, link them please!

  28. kursad says:

    Try Eclipse with Eclim. It is the best Gvim integration. You can use all the eclipse features inside Gvim. There are multiple modes that you can exploit.

  29. troyt says:

    Git integration and the interactive Python shell (and Python debugging) are available in Komodo IDE, but not in Komodo Edit:

    http://www.activestate.com/komodo-edit/compare-with-komodo-ide

    The missing ‘:w /some/filename.txt’ Vim functionality is tracked in this bug:

    http://bugs.activestate.com/show_bug.cgi?id=47388

  30. Chris Clarke says:

    You need to try wingware even though its X11 on the Mac. Do you know that you can step through your django views, template tags, etc. in the debugger? Hell in version 4 (still in beta) you can even step through the templates.
    This has saved me enough time to justify the $$$.
    The Wing folks keep rolling out significant upgrades at no cost. Although i suspect they want to charge for the version 4 upgrade

  31. I think it’s a shame you dismiss Wing out of hand. I use it all the time on Mac OS and it’s a great Python IDE.

  32. Will says:

    Eclipse + PyDev works really well for me – but I’ll agree that it was pretty painful to get working the way I wanted it to.
    That being said – I don’t think you give Eclipse / PyDev enough credit – its advantage (not disadvantage) is that it runs within Eclipse, bringing a lot of powerful features online. Is it heavy for Python development? Perhaps. But if you have patience and really take the time to extend PyDev (Jython plug-ins? Very cool.) to your liking – you’ll find that is can be a highly productive IDE.

  33. muttly says:

    > First, let’s get Wingware out of the way. I’m on a Mac, and if you’re not going to develop for the Mac,

    It’s like you’re looking for your “perfect woman” but don’t even look at non-blonds.

    you’re a fucking moron of a mac fan boy.

  34. m0j0 says:

    @muttly,

    Actually, it’s like I’m looking for my perfect woman, but have decided that lesbians aren’t going to work out.
    You’re fucking terrible at analogies.

  35. [...] Shared Python IDE Frustration | Musings of an Anonymous Geek. [...]

  36. Netbeans is ok, everybody should give a try. But I’m also a pycharm fan, I’m using it as my main IDE.

  37. Jparsons says:

    I liked spe on windows and ubuntu (hardy), I’m now on mac os x and spe isn’t quite ready yet . I heard spe has some funding to improve the mac port, so check for it in the future. Otherwise, back to vim/gvim for me.

  38. I would gently suggest giving eclipse and pydev another shot. It’s something I’ve struggled with over the years and I have some problems with parts of it but I’m addicted to t he features that I can’t quite replace it.

    There are a few tricks that you need to learn, then your pretty much sorted. Firstly you only need the ‘Platform Runtime Binary’ not the packaged up version of eclipse that comes with loads of bloated tools you don’t need. You can download it here; http://download.eclipse.org/eclipse/downloads/ (click on the latest version) then scroll down the next page until you see the runtime binary only – its around 47 mb.

    After that, just install the very few plugins you want and need. After doing this I found it much more bearable and much faster.

    Now, that’s my main tip for speeding it up – but yes, there are many problems still with the settings and so on. but learning these are not hard and then customising is fairly quick.

  39. ubersoldat says:

    I’ve also tried many IDE’s (not as much), but once you work with VIM, it’s very hard to go back to an IDE since you’re used to work without moving your hands out of the keyboard and way too many things need the mouse when working outside a terminal.
    Anyway, I too use taglist, mapped to F4. On F5 I have “:!python %” and on F6-F7 tabs changes. On F8 I have “:!pychecker %”
    Since I don’t like having too much stuff I use Guake for my python console. I really like this workflow and find it much more efficient.

  40. Peter Odding says:

    Though I’ve given several IDEs a try, I still use Vim for most of my text editing, including a lot of Python programming. What I really like about Vim is that its so extensible: I’ve written dozens of small Vim scripts that help me in various ways.

    Most recently I wrote a plug-in that maps F1 in Python buffers to search through the Python language and library reference documentation for the keyword or identifier at the current cursor position and open the first match in your web browser.

    It helps me a lot when I’m getting to know new modules in the standard library. If it sounds useful you can download it at http://github.com/xolox/vim-pyref#readme

    Feel free to contact me if you can’t get it working or manage to break it :-)

  41. WhiteShadow says:

    Netbeans plugin for Python. I do program in C and Py; this environment is [very] close to perfect.
    Try it: http://netbeans.org/features/ide/editor.html

  42. Tobie Nortje says:

    I have been using Spyder. I have used all the others and because I do a lot of scientific stuff it is great. You can even plot directly from the interpreter as in integrated window in spyder.
    I also suggest installing PythonXY …. everything is already installed. at 400MB it is big, but a worthy distribution. An – Spyder comes bundled with PythonXY – http://www.pythonxy.com/

  43. Paul says:

    I used SPE when I was running Windows.
    But when I booted Windows for Linux, I moved to Komodo Edit. Now I’m running PyCharm. One thing I’ve found is that it (and Eclipse stuff) needs lots of memory. To get decent performance I had to upgrade to 4GB.
    I’ve not made a firm commitment to PyCharm, but I like what I see.

    Like you VI key bindings are pretty much a requirement for me.

  44. Larry says:

    I’m not an especially fast typist so my “gotta have” features are 1) a parser and drop down menu that takes me to that class/method/function, and 2) proper support for double- and triple-click and drag.

    Perhaps not surprisingly, I mostly use TextWrangler, today’s free version of BBEdit (both Mac only) and SPE when I want a common, cross-platform editor. All of the other editors have failed me for one reason or another as I keep gravitating back to do my work on the Mac and moving the product over to the other platforms when done. TextWrangler is just too convenient.

    …but enough has been said of PyCharm that I’ll give it a try.

  45. rahul says:

    Try PyScripter latest is 2.4.x

  46. Vlad Bayan says:

    Eric is free and is complete IDE with debugger, code completion, lots of stuf etc

    i use it on linux, but it works on Mac too

  47. Mike Rans says:

    PyStudio is a plugin I’ve written for Editra, with help from the editor’s author, that adds IDE functionality like PyLint syntax checking and a Winpdb based debugger.

    http://code.google.com/p/editra-plugins/wiki/PyStudio

  48. Adrian Kalbarczyk says:

    I have a decent hardware (c2d 3ghz) and only Komodo matches my speed of writing code. All Java based IDE’s are slowing me down so that all features not found in Komodo do not compensate this time. I don’t know faster git “IDE” than git commit -a -m “$1″ && git push inside a push.sh script and tig for reviewing changes.

    Best Komodo feature is “self.”, “” and autocompletion for ALL libraries installed on a system.

    PS. I’m using only free Edit version.

  49. Rhys says:

    It looks like you want vim, so why no use eclim. It is mash of Eclipse and vim. It runs a connection to eclipse so you can have all the features in vim in eclipse and all the features in eclipse in vim. You can use other languages as well. C++, C, PHP, Ruby, Java, Javascript. It’s fantastic!

  50. bkjones says:

    @Rhys – I now use PyCharm, which also supports other languages and has a pretty awesome vim plugin called IDEAVim. Thanks!

Leave a Reply

Panorama Theme by Themocracy