share
Stack OverflowWhat IDE to use for Python?
[+1024] [1] husayt
[2008-09-17 09:53:15]
[ python ide editor ]
[ https://stackoverflow.com/questions/81584/what-ide-to-use-for-python ]

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

[+1296] [2008-09-17 09:57:19] Rafał Rawicki

Results

Spreadsheet version [1]

spreadsheet screenshot

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

                         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 [3]

[1] https://docs.google.com/spreadsheets/d/1l3x94P55qoxqYbq5GosWQ7IonZ4vR-4ZyCaImiVmCSk/pubhtml
[2] https://i.stack.imgur.com/ItVKB.png
[3] https://docs.google.com/spreadsheets/d/1l3x94P55qoxqYbq5GosWQ7IonZ4vR-4ZyCaImiVmCSk/edit#gid=0&fvid=1960281650

(80) On my smartphone browser, this table is completely unreadable. - Axel
(86) 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
You can add canopy. It is quite nice. - Rakesh
(3) It would be also good to know which of these IDEs can open a Python interactive shell inside them. - multigoodverse
(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 (r-bloggers.com/rstudio-clone-for-python-rodeo) - nathaneastwood
@OhadR Eclipse also has own Python support specialmeaning.blogspot.com/2016/04/… - Serg Kryvonos
(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
@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
@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
@Timmmm dir() and help() list all properties of mysteryvar. I prefer online docs to debuggers. - Cees Timmerman
@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
@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
(1) What about refactoring (e.g. variable or function renaming across files) ? IMO, much more important than most of the other table entries. - rockdaboot
Spreadsheet and text version differ: you need to add Code Templates to PyCharm. - timo.rieber
emacs has some DB support in form of installable packages. never tried it though. - Loreno Heer
KDevelop (with kdev-python) has integrated PDB debugging, code templates and real (type-aware) autocompletion. - FLHerne
(1) The most important feature I wanted (type inference) isn't on this list... - user541686
(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
(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
@Mehrdad Type inference is used for calltips and autocompletion. - Cees Timmerman
(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
@Mehrdad Text editors don't understand variable types. Try Visual Studio Code or any other competent Python IDE like PyScripter. - Cees Timmerman
@FLHerne Not on Windows 10 as far as i see. Feel free to update the table yourselves. - Cees Timmerman
@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.<Tab>fo while in other tools you can do Foo.<ctrl-Tab>bar and it will find Foo.foobar()) - ntg
@Tom - the plugin for Netbeans is still available. See 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
@user541686 PyCharm is capable of type inference - bb1950328
@GeorgeStocker, Note that IDLE supports line numbering as of IDLE 3.9.0 - CoolCoder
1