72

Is there an equivalent to 'intellisense' for Python?

Perhaps i shouldn't admit it but I find having intellisense really speeds up the 'discovery phase' of learning a new language. For instance switching from VB.net to C# was a breeze due to snippets and intellisense helping me along.

sawa
  • 165,429
  • 45
  • 277
  • 381
Andrew Harry
  • 13,773
  • 18
  • 67
  • 102
  • Thanks for all of the great suggestions! – Andrew Harry May 25 '09 at 02:12
  • 3
    Love the random close vote - what's with that? – Andrew Harry May 25 '09 at 03:07
  • In some way duplicate : http://stackoverflow.com/questions/81584/what-ide-to-use-for-python – Tom Leys May 25 '09 at 03:18
  • Thanks for the link. Not a duplicate question in my opinion. I can't find the answer i'm looking for in their. – Andrew Harry May 25 '09 at 03:40
  • 1
    What you want is "Automatic code completion" - The editors that support are listed with AC next to their name by the original poster in http://stackoverflow.com/questions/81584/what-ide-to-use-for-python – Tom Leys May 25 '09 at 22:28
  • 1
    All options are likely covered in the many questions tagged python+ide: http://stackoverflow.com/questions/tagged/python+ide. Specifically, this one looks like an almost exact duplicate: http://stackoverflow.com/questions/698/is-there-an-ide-that-provides-code-completion-for-python – Jonik May 26 '09 at 13:23
  • @Jonik - that link has gone. – Robino Jan 22 '16 at 07:40
  • @Robino, indeed that question has been deleted. As for the original question, as of 2016, [PyCharm](https://www.jetbrains.com/pycharm/) by JetBrains very likely has the best Python code completion and intelligent assistance features. – Jonik Apr 04 '16 at 13:22
  • unfortunately python is poor in intelligence. I found no IDE with intelligence like VB.net or C#... :( – afruzan Jan 10 '19 at 08:47

16 Answers16

31

This blog entry explains setting Vim up as a Python IDE, he covers Intellisense-like functionality:

Python Intellsense
(source: dispatched.ch)

This is standard in Vim 7. There are a number of other very useful plugins for python development in Vim, such as Pyflakes which checks code on the fly and Python_fn.vim which provides functionality for manipulating python indentation & code blocks.

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
redacted
  • 2,429
  • 2
  • 16
  • 10
  • 1
    Is there something like this for Emacs? – J S Nov 26 '09 at 10:55
  • 1
    I'm afraid I don't use emacs! I came across this blog entry but I can't make any comment about its quality : http://hide1713.wordpress.com/2009/01/30/setup-perfect-python-environment-in-emacs/ – redacted Nov 27 '09 at 17:11
  • I use these settings http://www.jesshamrick.com/2012/09/18/emacs-as-a-python-ide/ – Chirag Dec 18 '12 at 04:08
  • 1
    The link has expired! could you please update it – kevin godfrey Jul 21 '21 at 12:19
  • Sadly, this answer is no longer useful as it references a blog post that is no longer available. –  Aug 29 '21 at 18:16
24

Have a look at python tools for visual studio, they provide code completion (a.k.a intellisense), debugging etc ...

Below is a screenshot of the interactive shell for python showing code completion.

enter image description here

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Frederic Heem
  • 574
  • 4
  • 7
  • 2
    Do keep in mind intellisense is NOT just code-completion, it's a generalized term that also applies to the tooltips when you hover your mouse over a function or variable, aka code-insight, which can be seen to the right of the highlighted `compile` method. this is something almost all Python IDEs don't do properly if at all, Eclipse only comes close, however it doesn't show you the types a variable can hold, or a function can take/return. (RE_Pattern in your screenshot) – Tcll Aug 31 '15 at 19:08
18

The PyDev environment for Eclipse has intellisense-like functionality for Python. Keeping an interactive console open, along with the help(item) function is very helpful.

Paul Fisher
  • 9,618
  • 5
  • 37
  • 53
  • And unlike other Python "IDEs" I tried, it even gets C extensions (at least PyQt4) right. –  Aug 23 '10 at 19:01
14

The dynamic nature of the language tends to make autocomplete type analysis difficult, so the quality of the various completion facilities menitoned above varies wildly.

While it's not exactly what you asked for, the ipython shell is very good for exploratory work. When I'm working with a new module, I tend to pull it into ipython and poke at it. Having tried most of the solutions mentioned above (though it's been years since Wing), ipython's completion facilities are consistently more reliable. The two main tools for exploration are tab complete and appending a question mark to the module/function name to get the help text, e.g.:

In [1]: import sqlalchemy

In [2]: sqlalchemy.s #tab completion
sqlalchemy.schema    sqlalchemy.select    sqlalchemy.sql       sqlalchemy.subquery

In [2]: sqlalchemy.select? #Shows docstring

In [3]: sqlalchemy.select?? #Shows method source

In [4]: edit sqlalchemy.select #opens the source in an editor
Karl Guertin
  • 4,346
  • 2
  • 22
  • 19
9

The IDLE editor that comes with Python has an intellisense feature that auto-discovers imported modules, functions, classes and attributes.

Soviut
  • 88,194
  • 49
  • 192
  • 260
  • or you can just use `dir(object)` to get that very same attributes list. but it's far from the informative intellisense I'm used to. – Tcll Aug 31 '15 at 19:22
8

I strongly recommend PyDev. In Pydev you can put the module you are using in the Forced Buildins, mostly the code-completion will work better than in other IDEs like KOMODO EDIT.

Also I think IPython is very helpful. Since it is 'run-time' in IPython, the code-completion in IPython won't miss anything.

jagttt
  • 1,020
  • 1
  • 12
  • 25
  • 1
    I wouldn't advise using PyDev. I've tried it with Django a bit and had lots of unresolved dependencies when it came to plugins like Akismet or Markdown. I tried many solutions but it didn't work in the end. I've heard much good about PyCharm, but haven't tried personally. – Wojtek Sep 09 '13 at 14:37
  • @Wojtek, have you another IDE to recommend ? I've tried PyDev, Sublime and Komodo Edit and Komodo is very nice because it's lightweight compared to Eclipse but I've some trouble setuping or understanding the way it's intellisense work... – RPDeshaies Nov 20 '13 at 16:49
  • 1
    @Tareck117 No, I'm not really a pythonist, I just make a quick foray into it once in a while. I use Sublime, but only for one-file scripts, it's not an IDE per se. As I said, I can recommend PyCharm, some of my pythonist friends use it and like it. I've heard it went free recently (community edition) with some limited features, but fully-working intellisense. You should give it a try. It's a commercial product so I presume they make it work properly, but can't guarantee. – Wojtek Nov 20 '13 at 17:06
  • VS2010 (can't use higher) with Python Tools is the best I've used with it's intellisense, Eclipse/PyDev does not provide as much information. – Tcll Aug 31 '15 at 19:19
7

PyCharm is the best Python IDE with IntelliSense support.

dns
  • 2,753
  • 1
  • 26
  • 33
6

I'd recommend Komodo Edit. However, I should point something out: you're not going to get anything quite as good as what you're used to with Visual Studio's C# intellisense. Python's dynamic nature can make it difficult to do these kinds of features.

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Jason Baker
  • 192,085
  • 135
  • 376
  • 510
5

Wingware for example implements auto-completion, see http://wingware.com/doc/edit/auto-completion .

Alex Martelli
  • 854,459
  • 170
  • 1,222
  • 1,395
4

ctags + vim works ok, too, although it is not as powerful as intellisense. Using this with ipython, you can get online help, automatic name completion, etc... But that's obviously command-line oriented.

Eclipse + pydev can do it as well, but I have no experience with it: http://pydev.sourceforge.net/

David Cournapeau
  • 78,318
  • 8
  • 63
  • 70
4

Well, I think the most dynamic way to learn Python is to use iPython.

You got autocompletion when using tab, dynamic behaviour because it's a shell and you can get the full documentation of any object / method typing :

object.method ?

When developping, I agree that PyDev is cool. But it's heavy, so while learning, a text editor + iPython is really nice.

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Bite code
  • 578,959
  • 113
  • 301
  • 329
2

For emacs and VI there's also https://github.com/tkf/emacs-jedi.

Adam Benzan
  • 524
  • 3
  • 11
2

I would recommend jedi-vim, it's perfect to me, try it and you won't regret.

j5shi
  • 797
  • 1
  • 8
  • 21
2

Pyscripter has the best intellisense i have meet :)

hugo24
  • 1,089
  • 13
  • 21
0

IronPython is the way to go. Visual Studio has the best intellisense support and you can utilize that using IronPython

SiTe
  • 1
  • I'd recommend just sticking with normal python, .NET is very bad... but agreed VS has the best intellisense. – Tcll Aug 31 '15 at 19:34
0

Try visual Studio Code. It has very powerful Python and Django support and thousands of plugins for other languages used in a Python project such as CSS, HTML and Django templates.

Best of all, it is free: https://code.visualstudio.com

hamzed
  • 71
  • 4