Best IDE for Python

sjdevnull at yahoo.com sjdevnull at yahoo.com
Mon Aug 14 18:02:13 EDT 2006


Yu-Xi Lim wrote:
> Eclipse+PyDev has the advantage over emacs when it comes to big
> projects, IMO. It has features like refactoring, better project
> management, code coverage

Emacs and vim both have good integration of BicycleRepairMan for python
refactoring.  I don't know what better project management or code
coverage in eclipse entail, but I've posted before that if you think
vim/emacs are just syntax highlighting/indenting text editors you've
got them misconfigured.

The beautiful thing about vim in particular is that it uses Python as
an internal scripting language, so it's very easy to extend it to add
whatever you want.

e.g. in vim I get
* Syntax checking, if I type invalid python code it gets highlighted as
an error (if I type, say, "if a=1:" and hit return, it gets highlighted
since I need an == there).
* Object browser, with dropdowns showing the parent and child classes
of the current class, and the ability to jump to various class methods
* Normal tag-jump stuff, so I can drill down into the method/function
call I'm looking at and then pop back up (keeping a stack so I can
drill down arbitrarily deep to follow the flow of the code)
* Interactive help, so when, say, I type foo.blah( then the status line
displays the first line of the docstring/python doc/preceding comment
for foo.blah.  E.g. if I type "cmp(" then the status line shows "cmp(x,
y) Compare the two objects X and Y and return an integer according to
..." and if I hit F1 then I get the full help text
* Editor control for uncaught errors--if I code I'm debugging raises an
uncaught exception, the editor jumps directly to it.  Even works for
web development, if I hit a page in my dev server that raises an
exception, it brings my editor right there.

and lots more (version control integration, easy mapping of keys to
restart the webserver after I make changes, etc).  And there's some
internal crap (e.g. we work on lots of clients who have client-specific
versions of some objects; I have a client menu so that if I pick one,
then I'll jump to their client-specific version of the current file (or
the base generic version if there isn't a specific one), tags will
follow the right client versions, etc).




More information about the Python-list mailing list