Ask HN: Professional Python IDEs?
Hey folks,
What are good Python IDEs, other than Emacs? What do people here use? Does anyone have direct experience with Wingware?
I code on both OS X and WinXP. I've used vim, Emacs, Textpad, IDLE, and TextMate.
What are good Python IDEs, other than Emacs? What do people here use? Does anyone have direct experience with Wingware?
I code on both OS X and WinXP. I've used vim, Emacs, Textpad, IDLE, and TextMate.
43 comments
[ 11.3 ms ] story [ 166 ms ] threadI'm also going to give Fedora a shot. As bloated as it is, free is nice.
http://www.activestate.com/Products/komodo_ide/feature_showc...
As a primary editor I use xemacs21 in full-screen mode with everything extra disabled; I typically have 2-3 instances running (due to parallel development in multiple branches) with 200 open buffers.
I'd love to pay $$$$ for a GUI that would make more efficient but I sppose I may be stuck with xemacs forever.
Ropemacs was the last impressive thing I saw, but it was a bit buggy. I don't seem to have need for refactoring, tag search is enough for me to navigate and dabbrev-expand based on other buffers contents is usually enough for me.
Links to the reviews:
http://spyced.blogspot.com/2005/09/review-of-6-python-ides.h...
http://spyced.blogspot.com/2006/02/pycon-python-ide-review.h...
also check out 'Idle' the standard editor issued with Python ... sorry I couldn't resist ~ http://en.wikipedia.org/wiki/Eric_Idle
(e.g. my problem is the completion feature with both python modes--i just can't get it to work, which is definitely a pitty, but probably i am just too incompetent :)
I liked using Emacs + SLIME in the Practical Common Lisp LispBox bundle, but didn't really feel like I was in control, because I simply don't know Emacs well enough.
Actually, about every 6 months or so, I go on an Emacs kick, but stop after a few days. Hmm, maybe it's that time again.
At work, I use Visual Studio. It's annoying, but with Visual Assist X, it's good enough. The devil you know, and all that. I can do almost anything I need to, without mousing.
At home, I've switched my main machine to a Mac Book Pro.
Hmm. That's where some of the recent dissatisfaction comes from: I'm using a notebook keyboard.
The interesting thing is: I can get things done in emacs much better than in anything else, since I am using tramp/dired+/cperl/auctex/re-builder/shell/svn/ediff/gud/etc.(could go on forever ;) which give me a competitive edge when compared to other tools; I was a heavy vim user (7y) before and still use it if it's just a typo or something like that, but vim has its own problems (different machines, different versions)
especially tramp is very much appreciated in web development environments, since i can just use any remote host as a local one...
ps: if visual studio means doing something in c# (the only thing i am not doing in emacs ;) i can heartily recommend resharper from intellij--without that visual studio is unbearable to me and always reminds me of vs 6.0 in the late nineties when it was still considered a good ide...
pps: i started using emacs just a couple of months ago, so if you are struggling, just give it a try--the juice is definitely worth the squeeze
In particular, there seems to be no way debug code while using the Django dev server with its autoreload feature. This means that either you don't debug code, or you have to restart the Django dev server every time you make a change. Very annoying.
Also, I haven't been able to find any Eclipse/IDEA level features in a Python IDE... things like being able to ctrl+click on an object to see where it was defined, or a "Find Usages" feature.
All in all, I think there is a huge opportunity to innovate in the web IDE department. Python, RoR, and even PHP all still need a killer IDE.
I configured the Django source as another project in Eclipse and make it a dependency in all my Django-based PyDev projects. This makes it possible to click on a class or function name and directly jump to its definition/declaration/source. That's better than any documentation.
Maybe the reason this works for me is that I also got the PyDev extensions? Even if it's just to support the PyDev developer with some cash, there are a few additional features in the extension that definitely improve productivity; see http://www.fabioz.com/pydev/. I configured the integration with PyLint, which helps a lot with coding style, especially since I am--for all intents and purposes--a novice to Python (4+ months of working with it).
Here's my take on the whole debugging Django issue:
a) In my experience, only a small fraction of development time is spent debugging. With the proper code structure/patterns/unit testing, little debugging should be necessary. This may be a controversial statement, but that's how I see it. For all the normal development use cases, just running the Django development server with default settings is fine and one can still edit inside Eclipse and get automatic reload. I have used debugging mostly to discover the framework (and Python) itself and found it extremely insightful, but did not need the reload feature then. Discovery can also be done in the interactive console, though.
b) If there is indeed a need to have a rapid change-debug cycle, the keyboard shortcuts to start a debug configuration in Eclipse allow a quick stop/restart of the development server with the --noreload option. The request can be made with the test client provided by Django; see http://www.djangoproject.com/documentation/testing/#the-test..., so one keyboard shortcut gets you to your first break point, without even using the browser.
I know Eclipse is a bit on the heavy side. A few gigs of RAM and a dual-core CPU help. I also do a fair amount of cross-language development and like the Eclipse platform for the breath of available language and tool support. In the past, I've used it extensively for PHP development and of course Java.
emacs - I ended up getting frustrated with the number of different options for python (ECB vs rope vs python.el vs python-mode.el vs ...) and I also couldn't get auto-complete working too well and it seemed to take a lot of setting up. It is good to have choices but as a novice it can be somewhat bewildering.
SPE - no-one has mentioned this yet but I found it usable - auto-complete is surprisingly good. With some project management facilities it could be very good indeed. Worth a try...
This is one of my pet peeves in IDEs. I can't stand slow-down or random auto-complete pauses.
Also, I hate how much hardware it takes to make anything run well.
Moore's Law is wrong about cost, it takes the same amount of money as before to make things run as well as it used to.
Honestly, if we're going to use languages like Ruby/Python/Perl which are so expensive on cycles it's ridiculous, can we save ourselves some computation pain, and skip the rest of the way to SBCL? Please? It's a minor speed penalty compared to ruby.
Previously I used Eclipse + PyDev but found it pretty slow and sometimes buggy. The debugger used to hang a lot even for simple python scripts. I switched to PyScripter and found it way better than any other free IDE available.
PyScripter is perfect for me in all sense except for debugging. The debugger is a bit unstable and does not work well with django.
Few days back I tried WingIDE. Being a Windows user I have a few issues with its look & feel as it is in GTK but prolly a *nix user feel will feel more comfortable with it than PyScripter. I've found its debugger better than any other and works for django perfectly. Stability is also good. I think it is worth the price.
Only for Linux alas.
http://praisecurseandrecurse.blogspot.com/2008/04/abysmal-st...
http://www.protocolostomy.com/2008/04/28/ubuntu-804-and-pyth...
http://news.ycombinator.com/item?id=130429