views:

10929

answers:

51

I am quite fond of the Intellisense code completion baked into Microsoft Visual Studio. I find that I only type 2 to 4 characters of any given keyword which drasticaly speeds up my coding. Now that I have been spending time writing some Python code I find myself reaching for ctrl+space.

Are there any IDEs that support code completion in Python? I do my python development on a Mac so an OS x tool would be preferable. It seems like the doc string property of Python methods is a perfect match for inline API discovery.

+25  A: 

The free Komodo Edit app from ActiveState includes code completion.

It's provided via XML files that detail the API(s) you are using.

It is cross platform and thus works on Windows, Linux and Mac.

Leon Bambrick
+1  A: 

Eclipse will do it, but only for imported objects. Sadly not for objects in your own source.

Gareth Simpson
+1  A: 

@Leon Yes, Komodo Edit is available for the Mac as well as for Windows. In fact, I use it on both platforms, and I'm extremely happy with it.

One thing to keep in mind: it's not a full blown IDE. It's more of a text editor with some project features and good syntax highlighting and code completion. If you're looking for something as beefy as Eclipse or Visual Studio, Komodo Edit may seem a little stripped down. On the other hand, Komodo is really, really easy to find your way around and doesn't have nearly the mental overhead of learning a new IDE like Eclipse.

I personally love Komodo Edit and recommend giving it a whirl.

Eric Sipple

edit: One other thing about Komodo Edit if you're used to Visual Studio (like I was when I started using it). Its code completion requires you hit Enter/Return to finish what you're writing, unlike Visual Studio. I find myself hitting the wrong key for the first couple of lines of code if I fire up Komodo after getting home from work.

saalon
+5  A: 

I've found that Eclipse/PyDev's autocomplete feature more powerful than Komodo Edit's, but that's to be expected. Although I'm a big autocomplete fan, I still find myself using Komodo more because it does a much better job of staying out of your way when you just want to write a script.

James Sulak
+44  A: 

Actually, PyDev plugin for Eclipse has a full support for code completion (try PyDev Extensions too). You can easily try it here. Another editor worth mentioning is WingIDE, which is really powerful. For more on Python editors check this page.

I use Aquamacs with ropemacs on my Mac, but that's an ultra geeky setup :)

Sebastjan Trepča
+3  A: 

To be really worthwhile the autocomple should read from your source, not just an API listing. It sounds like both Komodo and the Eclipse plugin do not support that. Is there any option that does?

Justin Walgran
In Emacs, the dabbrev-expand command expands words "dynamically". The command is bound to M-/ (Alt-slash in Linux). Type C-h k M-/ in Emacs for more information.
akaihola
+1  A: 

Here you can find a complete list of editors for Python:

http://wiki.python.org/moin/PythonEditors

For me, the best editor is PyDev in Eclipse. Especially the debugging is nice.

Daan
+2  A: 

I use TextMate on my Macintosh. With the Python/Django bundles it's very usable (and mac-like, which is important to me... emacs/aquamacs/xemacs make me context-switch from the rest of my applications).

+3  A: 

There is a full Komodo IDE from ActiveState which will allow you to debug and step through Python code as well as do the code completion. I use it at work for Perl and PHP development (it covers Perl, Python, Ruby, TCL and PHP) and it works really well. I use it on a PC, but I know it works for Macs as well. Of course, this one you have to pay for over the free Komodo Edit, but you do get a lot for your money.

Xetius
+1  A: 

Boa Constructor is free, OpenSource and developed in Python + wxPython. It supports auto completion pressing Ctrl+Space, works OK for me.

PabloG
+1  A: 

Not an OSX editor, but for those working with IronPython on Windows, there is a community maintained edition of Visual Studio available configured for working with IronPython and providing full Windows Forms and WPF designer support.

It can be accessed from its home on CodePlex.

Nidonocu
+1  A: 

eric4 does the job very well for me: http://die-offenbachs.de/eric/index.html

Ghirai
+23  A: 

Vim's OmniComplete has the same fun intellitext-style popups and everything for auto completion.

http://vimdoc.sourceforge.net/htmldoc/version7.html#new-omni-completion

codemac
A: 

The pay version of Komodo IDE has the best autocomplete of any of the IDEs I have personally tried. PyDev's autocomplete is ok, but really don't care of Eclipse unless I am working with Java/J2EE.

+1  A: 

pydev plugin for Eclipse is the best option for now !! Also since it is an open source project you can extend it if you didnt like any feature

A: 

The free Komodo IDE definitely does parse your own modules/source and include that in the code completion. It is not limited to built in Python APIs.

+10  A: 

I have tried a lot of python IDE's and the best one I like is PyScripter. Its easy to use and has nice code completion.

JSN
+8  A: 

Komodo Edit from the Open Komodo project has the best auto-completion and code/text introspection I've ever seen on an editor - for python as well as a number of languages. It reads from your source, rather than requiring any particular configuration. (It even manages to be able to edit Bash, SQL and structured text files intelligently.) You can also attach libraries/modules to it, so you have documented access to them.

I would highly recommend the free Komodo edit.

ChrisThomas123
+2  A: 

Actually PyDev is worth while and I've found it to be the best of all the editors for Python. It seems though, that Pydev extensions (which are nonfree) would make the perfect couple. Too bad that these aren't free (autoimport and other stuff from PyDev extensions are really nice).

Two other editors I've been using with python so far are Eric and UliPad(mostly on slower computers). Vim is also great, but I couldn't get it to autocomplete on Windows somehow :-(

Bartosz Radaczyński
Just ran into this, and I'd like to add (for completion) that PyDev Extensions has since become free and open source as well. It can be found here: http://pydev.org/index.html
Edan Maor
A: 

To be really worthwhile the autocomple should read from your source, not just an API listing. It sounds like both Komodo and the Eclipse plugin do not support that. Is there any option that does?

The free Komodo editor performs its autocompletion on your source, not an API listing. It's what I use for GAE development, the only Python I do.

Chris Marasti-Georg
+3  A: 

I'm not sure how well this would transfer to a Mac, but adding auto completion is easy in linux.

In your .pystartup.py file, add the following lines.

import readline
readline.parse_and_bind("tab: complete")
del readline
David Locke
That's the python command line, which is useful, but nothing like an ide.
rjmunro
+1  A: 

WingIDE (www.wingware.com) is by far superior in terms of code completion and being "Python-aware" in general to any Python editor or IDE out there (I've looked at PyDev, Komodo, and others mentioned here). WingIDE is not free, but being under $200 for a full-blown single-user version makes it easy to talk even the cheapest manager into the purchase. Take it for a free trial first and experiment with all the options. I've used it for about 3 years now and would not think of writing/debugging Python code without it.

scrible
+1  A: 

The best editor for the Mac IMO is TextMate. It's got a python bundle that will do what you're looking for. It's got bundles for a zillion other languages as well.

Well worth the price.

Petey
A: 

TextMate is the best all around editor for any kind of language for the OSX. It doesn't provide intellisense type autocomplete, but does something I find more useful. Type a partial word and hit ESC. It will select the word nearest to where you are typing that matches your start string and input it. Hit ESC again to scroll through more options. There is a Windows clone called e.

Acuminate
+5  A: 

On Windows, PyScripter is a pretty good free and open-source IDE that provides code completion (as well as debugging and other features). It doesn't really parse doc strings or other annotations, so it has limits to the completions that can be offered.

WingIDE is a cross-platform (Windows, Linux, Mac) commercial IDE. It's pretty full featured and you can provide annotations in comments as hints to the intellisense. There's a free version of Wing, but I don't know if that contains that feature. A trial version is available for all the versions.

ars
+1 because I Like PyScripter.It does understand doc strings, but only when you are debugging a Python script. It would be nice if the Code Explorer window understood doc strings.
Ashley Davis
+12  A: 

It's also possible to turn VIM into a respectable Python IDE:

http://blog.sontek.net/2008/05/11/python-with-a-modular-ide-vim/

EDIT: The link seems to have changed to (thanks hasen j):

http://www.sontek.net/post/Python-with-a-modular-IDE-%28Vim%29.aspx

Mike Mazur
link should be http://www.sontek.net/post/Python-with-a-modular-IDE-%28Vim%29.aspx
hasen j
+1 thanks for this
Justin
+4  A: 

I'm surprised no one has mentioned SPE (pythonide.blogspot.com). It has code completion not only with the python libraries but the code you write as well, it's not import only it will complete code in the same file as well. It also has a whole bunch of features like UML diagram tool, and pydoc generation.

zoke
Of course since Stani made the move to Ubuntu, the deployment to windows isn't trivial (import from public svn, etc). A great editor though.
Christopher Mahan
Added a link for SPE on windows: http://pythonide.blogspot.com/2007/02/how-to-download-latest-spe-from_26.html
Christopher Mahan
SPE on sf.net is version 0.8.3 (2006). On SVN: version 0.8.4.i. (August 2008)
Christopher Mahan
+1  A: 

I have heard (disclaimer: I have no personal experience with it) that the Python editing for NetBeans, done to support Jython, has nice code completion and other features.

Here's a link to a relevant post on multi-lingual NetBeans by Tor Norbye, a NetBeans wizard.

joel.neely
I don't think its fully baked yet, but the Ruby support (which Tor also helped on) does have code completion for your code, as well as other libraries, so I'd assume the Python support would too.
Andrew Harmel-Law
A: 

@Sebastjan I started using Aquamacs on my Mac for text editing, but I felt like it lost some of the "emacs style". Now I'm using CarbonEmacs, which is older but it looks more like the original :)

Mario
+3  A: 

Emacs and vim both have autocomplete.

ionut bizau
A: 

TextMate is an excellent editor that has a bundle (it's version of plugins) for python development which can be found here in their svn repository. A tutorial on how to add these plugins can be found here.

On a side note there are a couple of really nice Django plugins for TextMate as well.

wbowers
+4  A: 

Eclipse (with pyDev) is great. Personally I find it a bit overkill for mundane tasks. The more features, the more they distract you from getting things done. Vim is my standard choice, it's powerful but the interface don't get in your way (check :help python in Vim). There's also a nice Tutorial on using Python with Vim.

Both are Open Source and got great Communities to get help. But on Mac I would strongly suggest to check out TextMate, it's awesome (and got nice support for Python and Django). I use it at work and absolutely love it, it's powerful but not bloated and let you focus an your work. TextMate is not Open Source though (if you care), and OS X only, so I stick to Linux and Vim at home.

Another slick and casual editor for Linux would be Scribes. For those on Linux who find an IDE too bloated but Vim too complex, check it out, it is very minimalistic but got some nice features gEdit, Kate, etc. miss.

Brutus
+1  A: 

Try Eric IDE I quite enjoyed using it.. am back to vim though.

beidy
A: 

I've wrote a very detailed blog on how to use vim and python together. This includes code completion, debugging, and context sensitive help.

You can get it here: http://blog.sontek.net/2008/05/11/python-with-a-modular-ide-vim/

Outside of vim, there are other IDE's you can use:

All 3 of those are cross platform and provide debugging and code completion.

Here is a full wiki on IDE's and Python: http://wiki.python.org/moin/IntegratedDevelopmentEnvironments

sontek
+7  A: 

IPython is an almost complete interactive python shell with an integrated help system and tab completion for every live object and class.

So you just need an IDE that integrates well with IPython, such as PIDA or Emacs.

vog
It doesn't work with Python 3.
Selinap
The author didn't ask explicitly for Python3. In addition, when Python3 becomes mature, IPython will surely also work on Python3.
vog
A: 

I recommend IPython as well. Besides the availability of tab-completion, IPython also supports custom "magic" keywords. My favorite is "%prun" which automatically profiles any method passed. Another benefit is pylab support. Much of my job surrounds the ability to plot data. Starting IPython with pylab turns the interpreter into the Python version of MatLab.

daniel
A: 

There is a plugin available at linil for python code completion using Gedit.

Enjoy it.

Rodrigo
+1  A: 

The rlcompleter module deserves special mention here. It's not specific to an IDE, but it does provide tab code completion in Python's interactive mode...very handy.

http://docs.python.org/lib/module-rlcompleter.html

jimmyorr
A: 

Editra has auto-complete for Python. It is a nice little editor (incidentally it's written in wxPython)

http://editra.org/

Corey Goldberg
+7  A: 

Hi; I've written PySmell, a library that provides auto-completion to Emacs, Vim and TextMate, by taking the TAGS approach - generate tags for your code and other projects, and complete based on those.

It completes import statetements, and has some rudimentary type inferencing. I'm about to release v0.7 which supports all that.

Grab it from: http://code.google.com/p/pysmell/

orestis
A: 

GEdit should do it for youand it makes the plugin creation process very easy and understandable.

marc lincoln
A: 

There is a plugin for python code completion in GEdit available at:

http://linil.wordpress.com/2008/05/31/using-gedit-to-auto-complete-python-code/

Rodrigo
A: 

+1 for Wing Professional IDE.

The "Go To Definition" and "Source Assistant" can really go a long way to assist in your better python learning.

It has Vi and Emacs Emulation too, if U need either of them. Only the UI is bad, if on Windows (as it is based on GTK), It rocks on ubuntu.

If you are using any text editor, (Scite is my choice) then U'd do well by using ipyton console. (U can do a easy_install of ipython, if easy_install is installed)

With python itself providing debug options, and ipython and bash shell offering good auto-complete options, it is not really a that bad option to do away with any IDE. But if you still want an IDE (as I want), Wing Professional is the best one out there.

I have also tried SPE, PyDev and am not impressed enough to consider them; but indeed some features of PyDev like verifying whether a variable is used or not and auto-setting of different modes- Debug, PyDev, Java Browsing when U run and application is available in PyDev alone.

If U only need a good Syntax highlighting SciTE (on windows, SciTE based Notepad++) is a good option. If U need "project" option and auto-complete with Syntax highlighting, Komodo Edit is the best option. It also supports many other languages. If you want everything but the space shuttle (minus some special features of PyDev), Wing Professional is the best IDE currently available.

Most important thing is "Choose one and go with it"

Lakshman Prasad
A: 

YES

Komodo Edit (Win, Linux, Solaris, OSX)

PythonWin (Win)

SPE (Stani's Python Editor)

Wingware's Wing IDE

PeterL
A: 

Link to NetBeans support. It is early access, but NetBeans has a good track record on their beta software.

TofuBeer
+1  A: 

For my Python scripting I use emacs + ropemacs (which requires Pymacs) + auto-complete.el + yasnippet along with icicles for minibuffer completion. auto-complete has a bug with ropemacs that stops you from opening a project when using "." for autocompletion, but hopefully this will be fixed soon. In the meantime you can use M-x rope-open-project (which is C-x p o).

+1  A: 

Ulipad is pretty good.

NobodyReally
Really really really good actually.
e-satis
A: 

For Vim, Pydiction seems to be the only way to go. It can Tab-complete any python module (both system and 3rd party) as well as python keywrods, plus you don't need to have vim support compiled into Vim to use it. http://www.vim.org/scripts/script.php?script_id=850

A: 

NetBeans supports it. Check the project here.

JG
A: 

OS X and no one have suggested XCode? XCode is fantastic on the Mac, got used to it when I started with Objective-C. It's a great tool, works great with Python and especially if you're writing Mac OS X software in Cocoa - where PyObjC provides the bindings. This would be my first choice when working in OS X.

Björn
+1  A: 

Pycharm: http://www.jetbrains.com/pycharm/

Works pretty great for me. Of course code completion in python is not going to be as perfect as it is for static languages -- a variable can dynamically change at runtime into anything. But it beats the hell out of nothing.

Also if you set up your interpreter and site-packages paths correctly in the project settings, you can easily jump into the definition of a Python's library module py files, which is very helpful at times. Plus the completion helper reads functions docstrings.

alt text

http://imgur.com/wIvAt.png

Infinity