1026

What IDEs ("GUIs/editors") do others use for Python coding?

George Stocker
  • 55,025
  • 29
  • 167
  • 231
husayt
  • 12,616
  • 7
  • 45
  • 75

1 Answers1

1290

Results

Spreadsheet version

spreadsheet screenshot

Alternatively, in plain text: (also available as a a screenshot)

                         Bracket Matching -.  .- Line Numbering
                          Smart Indent -.  |  |  .- UML Editing / Viewing
         Source Control Integration -.  |  |  |  |  .- Code Folding
                    Error Markup -.  |  |  |  |  |  |  .- Code Templates
  Integrated Python Debugging -.  |  |  |  |  |  |  |  |  .- Unit Testing
    Multi-Language Support -.  |  |  |  |  |  |  |  |  |  |  .- GUI Designer (Qt, Eric, etc)
   Auto Code Completion -.  |  |  |  |  |  |  |  |  |  |  |  |  .- Integrated DB Support
     Commercial/Free -.  |  |  |  |  |  |  |  |  |  |  |  |  |  |  .- Refactoring
   Cross Platform -.  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |     
                  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Atom              |Y |F |Y |Y*|Y |Y |Y |Y |Y |Y |  |Y |Y |  |  |  |  |*many plugins
Editra            |Y |F |Y |Y |  |  |Y |Y |Y |Y |  |Y |  |  |  |  |  |
Emacs             |Y |F |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |  |  |  |
Eric Ide          |Y |F |Y |  |Y |Y |  |Y |  |Y |  |Y |  |Y |  |  |  |
Geany             |Y |F |Y*|Y |  |  |  |Y |Y |Y |  |Y |  |  |  |  |  |*very limited
Gedit             |Y |F |Y¹|Y |  |  |  |Y |Y |Y |  |  |Y²|  |  |  |  |¹with plugin; ²sort of
Idle              |Y |F |Y |  |Y |  |  |Y |Y |  |  |  |  |  |  |  |  |
IntelliJ          |Y |CF|Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |
JEdit             |Y |F |  |Y |  |  |  |  |Y |Y |  |Y |  |  |  |  |  |
KDevelop          |Y |F |Y*|Y |  |  |Y |Y |Y |Y |  |Y |  |  |  |  |  |*no type inference
Komodo            |Y |CF|Y |Y |Y |Y |Y |Y |Y |Y |  |Y |Y |Y |  |Y |  |
NetBeans*         |Y |F |Y |Y |Y |  |Y |Y |Y |Y |Y |Y |Y |Y |  |  |Y |*pre-v7.0
Notepad++         |W |F |Y |Y |  |Y*|Y*|Y*|Y |Y |  |Y |Y*|  |  |  |  |*with plugin
Pfaide            |W |C |Y |Y |  |  |  |Y |Y |Y |  |Y |Y |  |  |  |  |
PIDA              |LW|F |Y |Y |  |  |  |Y |Y |Y |  |Y |  |  |  |  |  |VIM based
PTVS              |W |F |Y |Y |Y |Y |Y |Y |Y |Y |  |Y |  |  |Y*|  |Y |*WPF bsed
PyCharm           |Y |CF|Y |Y*|Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |*JavaScript
PyDev (Eclipse)   |Y |F |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |Y |  |  |  |
PyScripter        |W |F |Y |  |Y |Y |  |Y |Y |Y |  |Y |Y |Y |  |  |  |
PythonWin         |W |F |Y |  |Y |  |  |Y |Y |  |  |Y |  |  |  |  |  |
SciTE             |Y |F¹|  |Y |  |Y |  |Y |Y |Y |  |Y |Y |  |  |  |  |¹Mac version is
ScriptDev         |W |C |Y |Y |Y |Y |  |Y |Y |Y |  |Y |Y |  |  |  |  |    commercial
Spyder            |Y |F |Y |  |Y |Y |  |Y |Y |Y |  |  |  |  |  |  |  |
Sublime Text      |Y |CF|Y |Y |  |Y |Y |Y |Y |Y |  |Y |Y |Y*|  |  |  |extensible w/Python,
TextMate          |M |F |  |Y |  |  |Y |Y |Y |Y |  |Y |Y |  |  |  |  |    *PythonTestRunner
UliPad            |Y |F |Y |Y |Y |  |  |Y |Y |  |  |  |Y |Y |  |  |  |
Vim               |Y |F |Y |Y |Y |Y |Y |Y |Y |Y |  |Y |Y |Y |  |  |  |
Visual Studio     |W |CF|Y |Y |Y |Y |Y |Y |Y |Y |? |Y |? |? |Y |? |Y |
Visual Studio Code|Y |F |Y |Y |Y |Y |Y |Y |Y |Y |? |Y |? |? |? |? |Y |uses plugins
WingIde           |Y |C |Y |Y*|Y |Y |Y |Y |Y |Y |  |Y |Y |Y |  |  |  |*support for C
Zeus              |W |C |  |  |  |  |Y |Y |Y |Y |  |Y |Y |  |  |  |  |
                  +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   Cross Platform -'  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |     
     Commercial/Free -'  |  |  |  |  |  |  |  |  |  |  |  |  |  |  '- Refactoring
   Auto Code Completion -'  |  |  |  |  |  |  |  |  |  |  |  |  '- Integrated DB Support
    Multi-Language Support -'  |  |  |  |  |  |  |  |  |  |  '- GUI Designer (Qt, Eric, etc)
  Integrated Python Debugging -'  |  |  |  |  |  |  |  |  '- Unit Testing
                    Error Markup -'  |  |  |  |  |  |  '- Code Templates
         Source Control Integration -'  |  |  |  |  '- Code Folding
                          Smart Indent -'  |  |  '- UML Editing / Viewing
                         Bracket Matching -'  '- Line Numbering

Acronyms used:

 L  - Linux
 W  - Windows
 M  - Mac
 C  - Commercial
 F  - Free
 CF - Commercial with Free limited edition
 ?  - To be confirmed

I don't mention basics like syntax highlighting as I expect these by default.


This is a just dry list reflecting your feedback and comments, I am not advocating any of these tools. I will keep updating this list as you keep posting your answers.

PS. Can you help me to add features of the above editors to the list (like auto-complete, debugging, etc.)?

We have a comprehensive wiki page for this question https://wiki.python.org/moin/IntegratedDevelopmentEnvironments

Submit edits to the spreadsheet

Cees Timmerman
  • 13,202
  • 8
  • 78
  • 106
Rafał Rawicki
  • 20,923
  • 3
  • 55
  • 76
  • 77
    On my smartphone browser, this table is completely unreadable. – Axel Nov 14 '14 at 07:53
  • 83
    **Moderator Note**: If you don't like the format of the table; feel free to edit the table out into a format you think is more visually appealing. The wiki-lock will stay on the question (otherwise, the temptation to add new answers that duplicate existing answers is too great); but everyone can suggest an edit to improve the post. If you're not willing to do that, then there's very little hope you're willing to help keep the question up to date anyway. – George Stocker Nov 18 '14 at 18:11
  • 2
    Netbeans does not support code completion, as of 8.0.2 – Musa Haidari Feb 06 '15 at 05:37
  • You can add canopy. It is quite nice. – Rakesh Mar 11 '15 at 02:03
  • Can you do a responsive version so I can read it on my blackberry please? – Exitos Apr 19 '15 at 20:58
  • 7
    @Exitos You can always suggest an edit for a better format. Use the 'suggest edit' or 'edit' button to do so. Be the change you wish to see in the world. – George Stocker Apr 22 '15 at 16:46
  • I just reviewed the entries for Spyder (which comes free in Anaconda) and Emacs, and I can certify that they are up to date as of now. – Aaron Hall Nov 01 '15 at 22:15
  • 1
    "This is an experiment. The C++ folks take care to keep their list pruned and updated. That's really the only way this can work." - http://meta.stackoverflow.com/a/276552/541136 So are some of these IDE's defunct and need deletion? – Aaron Hall Nov 02 '15 at 02:04
  • I use sublime IDE anaconda. It does most of what is required for python pep'ing. In current environment, PyCharm is slow. Sublime on the other hand is relatively fast. It has flexible customizing feature. http://damnwidget.github.io/anaconda/ – nish Nov 05 '15 at 12:56
  • 3
    It would be also good to know which of these IDEs can open a Python interactive shell inside them. – multigoodverse Nov 14 '15 at 13:13
  • 1
    the open source link is currently dead – JenB Nov 21 '15 at 11:46
  • 1
    For those looking for a good data analysis IDE for Python, Rodeo have just updated their attempt and it essentially copies the look and feel of RStudio (http://www.r-bloggers.com/rstudio-clone-for-python-rodeo/) – nathaneastwood Jan 04 '16 at 15:23
  • @OhadR Eclipse also has own Python support http://specialmeaning.blogspot.com/2016/04/setting-up-eclipse-native-python.html – Serg Apr 02 '16 at 11:46
  • 3
    The 'Y' for code completion is a bit misleading IMO. The only IDE I've tried on that list that has *real* code completion is PyCharm. Most of them have word-processor style code completion where it just matches what you've previously written, rather than actually trying to work out the type of your variables. I mean, it's understandable since Python's dynamic typing makes it extremely difficult to do, but we shouldn't delude ourselves that all these IDEs actually have real code completion. – Timmmm Apr 11 '16 at 14:50
  • @Timmmm I like my auto-completion simple, flexible, and fast, and only Notepad++ supplies that. Most IDEs i've tried only have call tips. – Cees Timmerman Apr 11 '16 at 15:49
  • @CeesTimmerman Most IDEs can do fast *and* accurate code completion for statically typed languages (Java, C#, C++). It's much more difficult for dynamically typed languages like Python, but I'd still rather have it than not. – Timmmm Apr 11 '16 at 20:17
  • @Timmmm `dir()` and `help()` list all properties of `mysteryvar`. I prefer online docs to debuggers. – Cees Timmerman Apr 12 '16 at 08:04
  • @CeesTimmerman Yes you can use online documentation but it is much slower. I don't know why you'd prefer the slow method. Btw I just tried Komodo Edit again (last tried about 5 years ago). It now has pretty reasonable code completion and it's very fast - worth a look. – Timmmm Apr 12 '16 at 08:49
  • @Timmmm Google has examples and is faster than managing and triggering breakpoints. Komodo Edit still lacks the more common case of reusing variable names in the same file, and even then might ignore those in comments. – Cees Timmerman Apr 12 '16 at 10:11
  • You could make a Markdown table of that. –  Apr 15 '16 at 11:46
  • 1
    What about refactoring (e.g. variable or function renaming across files) ? IMO, much more important than most of the other table entries. – rockdaboot Jun 08 '16 at 09:35
  • Spreadsheet and text version differ: you need to add Code Templates to PyCharm. – timo.rieber Jun 16 '16 at 05:24
  • emacs has some DB support in form of installable packages. never tried it though. – Loreno Heer Nov 28 '16 at 12:31
  • KDevelop (with kdev-python) has integrated PDB debugging, code templates and real (type-aware) autocompletion. – FLHerne Nov 30 '16 at 15:14
  • 1
    The most important feature I wanted (type inference) isn't on this list... – user541686 Apr 18 '17 at 05:19
  • 5
    What's wrong with the link? When I click the image, the table has a dozen rows, while the preview seems to have thirty... – Right leg Sep 08 '17 at 12:21
  • 2
    The spreadsheets sems to have lost a lot of entries. As @ Rightleg pointed out, the picture shows a lot more entries than currently present, including Geany I use right now. What is the reason of removals? – Neinstein Nov 01 '17 at 15:45
  • Are any of these actually any good? I'm still looking for a Python IDE I'm happy with. Atom doesn't do real context-sensitive autocorrection, eats massive amounts of RAM and the its Emacs keybindings are awful. PyCharm is pretty good but uses a lot of memory and the full feature set is expensive (£180 for a one-year license!). Eclipse does pretty much everything but again has a huge memory footprint. Emacs appears to do most things but the configuration is so byzantine that I've given up (and it doesn't have a decent project tree display). NetBeans 8.2 doesn't seem to support Python. – Tom Mar 01 '18 at 13:20
  • Actually, I've given emacs / elpy another go. It's not perfect (or maybe I haven't got it configured perfectly yet) but it already outdoes any of the free options. – Tom Mar 01 '18 at 17:49
  • @Mehrdad Type inference is used for calltips and autocompletion. – Cees Timmerman Sep 24 '18 at 09:18
  • 1
    @CeesTimmerman: It's not clear to me what qualifies as auto-completion. My text editor just displays whatever words it finds in the current file as auto-completion entries; it's pretty dumb and doesn't do any type-inference. Also, when I hover on a variable in Visual Studio, it shows the actual types that were inferred. That's more information than simply listing the guessed methods. – user541686 Sep 24 '18 at 09:22
  • @Mehrdad Text editors don't understand variable types. Try Visual Studio Code or any other competent Python IDE like PyScripter. – Cees Timmerman Sep 24 '18 at 09:29
  • @FLHerne Not on Windows 10 as far as i see. Feel free to update the table yourselves. – Cees Timmerman Sep 24 '18 at 10:56
  • I Like using pyCharm https ://www.jetbrains.com/pycharm – Nada N. Hantouli Feb 13 '19 at 13:55
  • @CeesTimmerman: +1. Its clear that there are various levels of auto-completion varying from repeating existing words, to full off-line syntactic analysis, and full online analysis based on what the current contents/type of a class/variable is. Also, some tools need you to enter the beginning of a function/property/class, while others can be invoked and then typing any part is ok I find the later incredibly useful (E.g. : say class Foo has method foobar(), in jupyter notebook you currently need to do Foo.fo while in other tools you can do Foo.bar and it will find Foo.foobar()) – ntg Mar 27 '19 at 10:07
  • @Tom - the plugin for Netbeans is still available. See http://plugins.netbeans.org/plugin/56795/python4netbeans802. This works in Netbeans 11 but has the same flaws. Has not been updated since around 2014. I hoped Apache would put some effort into Python when they took over Netbeans but nothing so far. – Crashmeister Nov 20 '19 at 22:10
  • @user541686 PyCharm is capable of type inference – bb1950328 Apr 28 '20 at 13:28
  • @GeorgeStocker, Note that IDLE supports *line numbering* as of *IDLE 3.9.0* – CoolCoder May 15 '21 at 08:25