I use a Mac and prefer Textmate but there are other choices. For the PC I have heard only good things about Notepad++.
There is Komodo from ActiveState which is commercial, there is also Komodo Edit which is free.
Eclipse with PyDev is pretty good these days.
I did dabble a little with SPE (http://pythonide.blogspot.com/) and Eric (http://www.die-offenbachs.de/eric/index.html) but found them a bit slow.
Big fan of Active States's Komodo IDE, which has excellent multi-language support, debugging, code-completion, source control integration etc. There's also its free little brother Komodo Edit available which is more than capable for many day-to-day tasks.
Both are cross-platform (Windows, Mac and *nix)
Vim - For me it's the best choice, regardless of technology I'm using at the moment. It's not so hard to learn as it looks and during the work you are becoming more and more productive.
The editor that comes with the python distribution (Idle) is very good for first time Python programmers.
I use Eclipse plus the PyDev plugin. PyDev has support for PyLint, which is another free download. With those three installed, you have an environment that can parse your python and spot errors (almost all errors, i.e bad vars, bad types, bad includes) as you type.
You can also debug from within the IDE, including single stepping. Selecting text in the IDE will evaluate it in the current environment (like visual studio's tooltips). It can launch and debug several processes from the one debugger and handles Twisted pretty well. I currently use it for working with Twisted and Django.
If you go with Eclipse, you should consider these plugins
- Aptana - either as a plugin or as an alterntive to Eclipse (extra features in commercial)
- Mylyn - Task management, often included already. Integrates with lots of other task managers
- Subclipse - SVN client built into eclipse
- Goto file - Open files in current project quickly with keyboard
- Multi Clipboard - Management of the last X things you cut / pasted
Also, outside of Eclipse, I suggest you get IPython for your command line debugging pleasure. I prefer it over the standard command line shell and IDLE (The GUI shell).
It would help if you provided what platform you are working on. For Linux (and probably other platforms) there is an Eclipse plugin for Python. I believe there is also a plugin for KDevelop.
I've heard a lot of good things about Code::Blocks, and it is multiple platform (win, mac, lin). Maybe give this a try: http://www.codeblocks.org/
See appropriate page in Python wiki and choose the one that fits your taste (have you ever heard of Emacs vs. Vim flame wars? ;)).
Personally, I'm using Textmate on Mac, Komodo Edit on Windows and PIDA on linux.
Usually any decent text editor will get the job done when editing Python files. I used Geany quite regularly since it has highlighting, indenting, and can run the script directly from the editor. It also includes a class browser feature which can extract methods and variables from a source file into a tree structure.
It is also extremely lightweight so it's not a big deal to start up for a quick edit.
I use gedit on my Ubuntu Linux machines. It's part of the standard GNOME installation and so you will also find it on many other Linux distributions. This means that it's either installed by default or installation is just one command away. When you load it up it looks a bit like notepad does on Win XP but it is a lot more powerful.
The beauty of gedit is that it has Syntax highlighting, not just for Python, but for many other languages as well. This is great because it means that I only have to get used to one editor no matter which language I happen to be hacking in.
If wish, you can also get it to do things like bracket matching, line numbering, launch a python console etc. More details can be found at
http://www.instructables.com/id/Using-Gedit-as-a-Python-IDE/
IDLE -- Does the trick for me (on Windows). Sometimes applications have weird quirks when run with this tool; otherwise its completion features are unequalled. Ugly font rendering, use bitmap fonts. Ugly GUI. Sometimes the loopback connection breaks and restarting is required to get it working again.
PyDev -- Lacks IDLE's completion features, but features smarter indenting. Requires you to create projects beforehand; after you do that, however, just copy pasting your Python scripts to the project folder will do. Sometimes it froze hard, but I'm not running the latest versions.
Gedit -- Does the trick for me (on Linux). General purpose editor that comes with a general purpose autocomplete plugin that is actually pretty good given the premises.
Vim -- I have a beef with how Vim autoindents Python.
For the first times though, nothing beats running Python's own text shell for toying around and reading those overlong help() outputs with less (Linux only). Otherwise be prepared to scroll up a lot.
Emacs has very good Python support, both wrt. syntax highlighting and getting the indention levels right.
Note that Emacs has a rather steep learning curve. But once you master it, it will help you be very productive in any language.
If you're interested, the Emacs wiki is a great starting point.
I code Python mainly under Linux, and use Bluefish, a text editor intended mainly for web design but which has syntax highlighting for Python. I think the power of a Python interactive session means there's no need for an IDE.
I've been using Vim without hassle for all of my Python development. I find it handles all programming languages very well, but when it comes down to it, it's a personal preference and you have to experiment with all the editors around until one suits you best.
A general purpose editor which is not mentioned too often is jEdit. After searching for an editor that suits me for years I settled on that one and use it pretty much exclusively now. Despite being java-based it feels fast and even starts up quickly on not too old computer.
I prefer to use PyDev for Eclipse, but E-Texteditor has some good bundle support (same as Textmate).
Dabo has its own IDE. It was decent if you wanted to use the dabo library to help with wxWidgets in Python. I stopped using it since I've moved to doing web development.
In Windows, I use Notepad++. In Linux, I am still trying to figure out what I like the most. I'm trying out Eric4 right now.
I use eric ide for most of my python work. It has all major features needed in an IDE, and quite a few minor ones as well, it is written entirely in python and uses QT so it is pretty cross platform. It also integrates the interactive python shell for quick experimetation.
Ive been a professional working with Python for 8 years and for large projects nothing have been more practical to work with as WingIde. Komodo, Eclipse, Boa, SPE, IDLE, PythonWi has always caused me grief and I always go back to WingIde. WingIde should be high on the list especially if you have to debug multi-threaded python apps, large frameworks like Zope, Django, Twisted, etc. It is cross-platform, multi-monitor, excellent support, always improving.
When you have to develop projects with hundreds of modules, WingIde is a strong choice.
It is very strange that nobody mentioned ipython (http://ipython.scipy.org/moin/). Ipython is a "python shell on steroids". It is a very useful (actually, must have) companion to any IDE. The new version of ipython is supposed to solve several problems that prevent its integration to IDE's. I really hope PyDev will have ipython integrated in it.
I normally use SPE (http://pythonide.blogspot.com). It's written with wxPython and includes wxGlade as a development tool. It also has code completion, UML generator, Blender support, and built-in PyDoc viewer. There are also many other features that it comes with, not to mention that it's free to use.
+1 for Wing Professional IDE.
The "Go To Definition" and "Source Assistant" can really go a long way to assist in your Python learning.
It has Vi and Emacs Emulation too, if you 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 you'd do well by using IPython console. (You 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 that bad an option to do away with an IDE. But if you still want an IDE (as I want), Wing Professional is the best one out there.
I have also tried SPE and PyDev and am not impressed enough to consider them. Some features of PyDev include verifying whether a variable is used or not and auto-setting of different modes- Debug, PyDev, and Java Browsing when you run an application.
If you only need a good Syntax highlighting SciTE (on Windows, SciTE based Notepad++) is a good option.
If you need project organization 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.
It is free for non-commercial work on a public Open Source project, see https://wingware.com/store/prices.
The most important thing is to choose one and go with it.
On Windows there is Zeus - http://www.zeusedit.com
It does Python syntax highlighting, code folding, code indenting, code templates etc.
You can even write Zeus macros using the Python language.
NetBeans is great, especially if you also happen to do for instance C / C++, Java or PHP.
For new Python learners the python.org download comes equipped with IDLE which is excellent to start with. It may be ugly but it is very good (auto-complete is good for new learners to).
I just want to update the WingIDE features. I'm referring to the 3.1 version (latest now Febr.2009):
CP, C, AC, MLS (support for C), PD, EM, SC, SI, BM, LN, CF, CT, UT
Hope you'll find this update helpful.
./alex
Is there any reason why PythonWin hasn't been mentioned yet? I find it easy to use, has nice autocompletion, and it's available under Windows if PyWin32 is installed.
NetBeans provides also an Integrated (Graphical) Python Debugger.
(Sorry, not enough rep to comment)
If you are on Windows, then PyScripter is the best FREE choice out there. It's a complete IDE with integrated debugger, single executable, no install hassels. It's only 6-7 MB in size. It's got support for remote debugging. Code completion is good, and cross referencing is provided by simply hovering the mouse over the symbol you want to know more about. It's a well thought out project. Plus its FREE and in active development. The latest version supports Python 3.0 as well.
Try it out. It's really good work, just like Python is.
Update PyScripter's option to this list: [Windows, CP, F, AC, PD, EM, SI, LN, CT, UT].
Usually people that come from other languages especially the .NET ones will ask about IDEs and won't accept text editors as an answer.
Because of the nature of the language a tool that tries to approach increasing productivity like eclipse and netbeans do for java or VS does for C# will fail miserably at that.
The features I've found most useful in the tools I've used for python are:
- Good support for code snippets - Textmate/e-editor, Gedit, Emacs
- Good support for browsing directory structures and moving around files - Textmate/e-editor, Eclipse (with pydev), Gedit.
- Autocomplete for used names - Textmate/e-editor, Emacs, Gedit.
- Good integration with VCS - Eclipse, Emacs, Textmate.
I've mostly stuck with Textmate on OS X and e editor on Windows. In combination with IPython I don't have much need to use anything else.
It is not easy to recommend an IDE for python, since they all have their strong and weak points.
But here is the two I use, and why:
WingIDE. This is my preferred IDE for larger projects, and the most important reason is its debugging capabilities. No other IDE I have tried have ever come close to WingIDE in that sense. But for that, I have to sacrifice a few things, like re-factoring... and money (I use the commercial version).
PyDev with Eclipse. I have just started to use this one, and love the fact that it has re-factoring. It also has a much better code-completion than WingIDE. On the negative side: I find it to be too complex. I'm struggling with the svn integration, how the projects are done, and that I'm not able to configure it with my favorite low-contrast color scheme.
A few years back, Emacs was my favorite (for programming, reading email and usenet new). Today, I prefer a perfect IDE... of which we have none... :-)
PS: I suggest an addition to the Acronyms: REF - Refactoring.
You should add Boa Constructor. I used it only once but it seems mature. http://sourceforge.net/projects/boa-constructor/ It contains a usable RAD - GUI and a code designer (as Dabo).
I'd suggest few more features to your list (in which I'm interested in particular):
GUI Designer (e.g. Qt, Eric, ..)
integrated database support
RAD (rapid application development, which IMHO means that the GUI Designer integrates code generation in a way that the user doesn't need to know about, for basic needs (as Visual Basic, and as where Dabo is aiming).
IMO Rapid dekstop development with seamless DB integration makes development rock for most common business applications, both in development and more importantly - for maintenance.
Up until a few months ago I was a long time user of SciTE (SCIntilla based Text Editor) but recently I've switched to using Geany, another lightweight open source Scintilla based text editor written in C. It's similar to SciTE but better in a lot of ways.
The only things I changed to make me feel more at home was the color schema (to match SciTE's) and disabling all the widgets I don't need (toolbar etc.).
Some of the interesting features of Geany (some also apply to SciTE):
- Folding
- Markers (easily switch between sections of a file)
- Simple session restore (project based files)
- Snippets (similar to SciTE's abbreviations)
- The ability to reorganize editor tabs
Geany (CP, F, AC*, MLS, SI, BM, LN, CF, CT)
Vim has CP, F, AC, MLS, SI, BM, LN, CF.
Other than that, it works with or without a GUI, and starts in a splitsecond:
$ time vim -c :q
real 0m0.139s user 0m0.092s sys 0m0.028s
Autocompletion is called Omnicompletion in Vim, but other than that, it's the same.
PIDA integrates Vim and therefore has nearly everything Vim has, but some more features. On the downside, it doesnt start so fast and it needs a GUI.
I usually just use Notepad++:
- Free
- (User-Extendable) Multiple Language Support
- Line Numbering
- Code Folding
- Windows Only (Unfortunately)
- Many other extensions and features.
I normally write fairly simple scripts, and don't need a full-scale IDE. However, I am looking at IronPython.
I would say that the best IDE for Python would be Wing IDE. Though it's a commercial application, it's quite powerful and it does justice to Python language.
Second IDE I would opt for is PyScripter, it is very simple but powerful and it gets the job done with no hassles. Moreover, it's free.
Third IDE I would opt for is Eric IDE, especially for developing PyQt Applications.
Also, I am on the lookout for Netbean's Python support, so far, they have only released a Early Release version. Lets see how the final version comes out.
+1 for WingIDE. Code Intelligence, Debugger, Support Python3.x (Only WindIDE 3.2 Beta, beta2 released recently).
Last time I tried Netbeans for python, it was brand new (well, beta I suppose) and did everything Eclipse + PyDev did. Overall, I thought it was nicer, except for a small issue with rendering lines so underscores were cut off. I believe this is to be fixed in the next version, which is due out VERY shortly. You can download builds of the next version now, but they don't yet have the plugins for python available. Many plugins aren't available for it yet though, so I don't foresee a problem there.
Some updates for Komodo: +EM (if you mean underline squigglies for syntax errors) +SI +BM (there is subtle highlighting of the matching bracket when cursor is on a bracket, plus keybindings to jump between them) +LN +CF +CT (Komodo calls them "snippets") +UT (in the commercial version, Komodo IDE, only)
Editra
A relatively new editor written in python, with a pythonic API and features like vim emulation, ipython integration etc.
I've given Eclipse with PyDev another chance as a result of this question. After using Komodo as my IDE of choice in the past year working with Django code, I was left impressed with Eclipse' (Galileo) performance improvements on the mac.
I've made the switch and can now easily recommend Eclipse over other options.
For changes done through the console though, Vim is still my preferred choice.
I really like using IntelliJ IDEA with Python plugin. Sometimes I need to cheat and look at the code of the library I'm using.
IntelliJ IDEA with Python plugin in my opinion has better completion and refactoring than PyDev. I use it for django web development so some other features as smart html editor and robust JS refactoring also help very much.
I sometimes use Davys IronPython Editor. Written in IronPython, simple interface. Low barriers to to bash out a few scripts when in a hurry. No real IDE features per se. Find it here: http://code.google.com/p/davysironpythoneditor/
When I started programming Python professionally I tried out most of the recommended IDE's. I wasn't very happy with either so I continued looking. In the meantime I used emacs to actually get some work done and now I'm not looking for an IDE any more.
Emacs with some extra tools such as python-mode, nosetests etc is great. It maximizes coding time and minimizes IDE issues. The only thing I miss is project wide find and query-replace.
I prefer Boa Constructor; which you do not have listed yet. Is it because it is still Beta? Boa was made directly for Python & wxPython. wxPython GUI visual development support & auto complete. The debugging tools are a little buggy but it seems to have all the features once you figure out how to use it.
CP, F, AC, PD, EM, SI, BM, LN, UML, CF, CT. It also has some other cool features like TODO list & show WhiteSpace.
I prefer PyDev (it's now free with all extensions, since it was acquired by Aptana). It has all features for modern Python programming and all the additional features coming with the Eclipse platform. It works on Linux and Windows. So you can easily have the same IDE on your preferred OS. So my Nr. 1.
A strong competitor for Pydev is Netbeans with the Python plug-in. But currently it's more for early adopters. I filled some bug reports about problems with the code assist and the debugging. But I see much potential that Netbeans can be in the future the Python IDE.
There are some text editors like Gedit, Vim, Emacs. For quick editing I like Gedit but it is not an IDE and I would never use it for large work or bigger projects.
I also tried some commercial IDEs like Komodo. But IMHO it's not the worst waste of money if I compare them with Pydev or Netbeans.
I would like to update the entry about SciTE: It is more like: CP, F, MLS, EM, BM, LN, CF, CT. Not to mention that it is lightning fast and quite scriptable compared to most alternatives.
I use Editpad Pro by JGSoft. What I like is that you can set up keyboard short-cuts to run commands.
I've got shortcuts to launch the selected file (with 2.5 and one with 2.6), run the selected file through PyLint, and launch Winpdb on the selected file.
It's really just an awesome text editor, but it works quite well for python development.
I am using 3 different tools:
- PyDev when developping regular Python code. The debugger is great.
- Komodo Edit for web apps with Django. I like the HTML, CSS, Js editor.
- SciTE for single file. It is lightweight.
IronPython Studio - Microsoft's 100% compatible Python implemention integrated with Visual Studio 2008 and it's free.
I use vim to write very small Python scripts and ipython for interactive experiments and investigations of unknown APIs.
I also use pudb for debugging Python code.
However, my favourite Python IDE is leo. Being written in Python itself, leo has a huge potential. It is fully scriptable and has a lot of tasty features. leo is different from traditional text editors and IDEs, it might look unusual at a first glance. But after using it for a while (not only as programming IDE) most people realize that leo is unique, because it raises the data management process to a new level.
I've used many, if not most, of the python IDEs out there. I have a bias toward free software, of course.
Of the commercial ones, I've only really tried Komodo, and it is excellent. Debugging support is comprehensive, with the ability to run interactive commands in the middle of a debugging session. ActiveState has been doing this a long time and makes it all work. That said, the free solutions are comparable enough that I haven't found it necessary to pony up the $$ for Komodo, but I still envy it at times.
Wing IDE is also supposed to be excellent for a commercial product, but I haven't used it. It has a good reputation if you are designing GUI-based apps. It may have an edge on Komodo in that respect.
Of the free solutions, I two environments, one that is full-featured and one that is bang-for-the-buck quick and dirty.
For full-featured development, I use Eclipse with Aptana PyDev as well as PyLint. PyLint integration is one of the big features, along with good (but not great) debugging. Subversion integration is a big plus and one of the features missing in a lot of other IDEs. The price you pay for these features is a lot of banging your head on trying to configure it all, since Eclipse is the Ikea of development environments. You have to obtain and assemble the pieces for each feature. Once it's together though, it's a great environment. The only other thing I haven't really investigated is unit testing support.
For bang-for-the-buck quick and dirty development I use PyScripter and it's the MVP of the ones I've used. It's small, comes in a portable .zip flavor, and has almost all of the features of the big boy Eclipse. I can't say enough good things about this environment, but there are just a couple nitpicks. The UI is a bit quirky in places, but it has all of the tools I need except subversion integration (it has pylint integration but I haven't tried that). The debugging is good, although it maintains a single interpreter session between runs so you have to reinitialize the interpreter between runs if you want to make sure you have a clean slate. Finally, you need to install an older version of the rpyc library to run an out-of-process interpreter session, which is desirable for stability and compatibility with all libraries. Unit testing support is available although I haven't checked that out either.
Here's a list of the other IDEs I've tried at one point or another: * Komodo Edit - a nice editor but not an IDE really * DrPython - good simple IDE * Eric3 - a bit confusing, didn't go too deep * SPE - one of the most featureful of the free IDEs, but didn't like the linux-focus of late (eg, no windows installer) * Notepad++ - plug for a favorite editor, not an IDE but gets the job done * PythonWin - simple, but PyScripter is as simple and far better * IDLE - in a pinch
Overall, if money were no object, I'd go with Komodo for it's great debugging, but I'd miss subversion integration (unless it has it now, it's been a long time).
Of the free solutions, I'd handily recommend PyScripter to new and experienced alike. If you do it for a living, though, I'd take the time to download the "core only" version of Eclipse and install Subversive, PyDev, PyLint and Mylyn integration with a good issue tracking system like Redmine.
My $.02
There's a new contender for Windows that I code named Pfaide in alpha state.
* C - Commercial
* AC - Automatic Code-completion (actively in the works, planned to be the killer feature in the end)
* MLS - Multi-Language Support (right now CSS, JavaScript, HTML with Django blocks.)
* PD - Integrated Python Debugging (right now only CPyhton 2.6, other platforms like IronPython also in the works)
* SC - Source Control integration (integrates with Tortoise* via shell context menus)
* SI - Smart Indent
* BM - Bracket Matching
* LN - Line Numbering
* CF - Code Folding
* CT - Code Templates
There is a nice article on turning Vim into a Python IDE: http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/
I've followed it (well, most parts at least) and it pays off. Vim doesn't bother you with lots of windows and unnecessary nested menus that are difficult to memorize and work with (yes, Eclipse, I'm talking to you). Vim gets the job (being an IDE, that is) done simply and effectively.
Wikipedia comparision of Python IDEs http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Python
Even though I think there's a "best" choice here (whatever that means...) and it's been mentioned, I'm going to break with what everybody else here has said, and quote Andy and Dave:
Use a Single Editor Well The editor should be an extension of your hand; make sure your editor is configurable, extensible, and programmable.
If you are already skilled at an extensible editor, then keep using that -- you just have to figure out what extensions make Python easier, but chances are somebody else has already done 99.9% of the work for you.
If you aren't skilled at an extensible editor yet, then you should be! Pick one and start learning, but don't limit your search to only "what's good at Python, today?" because you weren't using Python 5 years ago and there's a good chance you won't be using Python 5 years from now. Get an editor that's good at editing text because that seems to be the only constant in this field.
I've had good results with both pydev/eclipse and wing ide. wing ide is commercial, pydev/eclipes is free/open source.
I currently use GVim (or vim, depending on my mood) with many customizations. These include having line numbering (which can be disabled/re-enabled by pressing F2) and an option to run the python code from inside the program (shift-e). If you would like to dabble with vim/gvim, I'll be happy to send you my customizations.
If you do not feel like messing with vim/gvim (yes, the key combinations are often rather less than intuitive), I highly recommend the Eric python IDE. You can get it from http://eric-ide.python-projects.org/ and it is already pre-configured specifically for python.
PyCharm from Jetbrains is great in prerelease and will be excellent by the time it's officially released in the fall (in the northern hemisphere) of 2010. It's got
- CP - Cross Platfom
- C - Commercial
- AC - Automatic Code-completion
- PD - Integrated Python Debugging
- EM - ErrorMarkup
- SC - Source Control integration
- SI - Smart Indent
- BM - Bracket Matching
- LN - Line Numbering
- CF - Code Folding
- UT - Unit Testing
It's got by far the best rename support I've seen in a Python IDE, and about 10 other refactorings so far; better code completion than I've seen; and definitely better code navigation (cmd-N and start typing the name of the symbol).
I use Dr.Python (ver 3.11.0) and SciTE , Dr.Python is pretty good, though it hasn't really been very popular !
Has anyone had experience with spyder? I cant see it mentioned but it does look promising..
The wing IDE but jetbrains has something new: http://www.jetbrains.com/pycharm/index.html
JetBrains as recently made their PyCharm IDE available for public preview. It isn't super yet, but I can imagine that they will shore it up pretty quickly. They are known industry wide for making exceptional products.
The best one is Wingware ( when you debug you have the whole stack in the console and can play arroud) On a mac it only works using X11 therefore i use Pydev and the VIM plugin for eclipse
Something I hadn't seen noted is that the Wing IDE now comes in a free flavor, Wing 101. It has reduced capabilities relative to the non-free versions, but I found it pleasant to work with, and it does have a break-point debugger and some other nice features. It was apparently designed in cooperation with the U of Toronto for CS students.
For Windows, PyScripter is the by far the best that I've tried. Very simple and clean.
I'v been using Spyderlib for some time, and its really worth trying.
http://code.google.com/p/spyderlib/
http://groups.google.com/group/pylons-discuss/browse_thread/thread/4f41aef28be741e5
Not only for Python, but also for other languages, I use Scribes.
No visual clutter. Ultra-minimal.
Its 'philosophy' is to be the most simple and sleek editor. That means just the few buttons necessary, the editing area and nothing else. No screen space is wasted by some IDE-like way of managing some barely used functionnalities. It even recently abandonned the menu bar by default (hidden most of the time but still accessible from a 'trigger area').It has no tabs (that frightens quite a few people), but it's only because it shouldn't be the job of the editor to manage the different documents opened: it's the job of the window manager (try pekwm for example). If you're not convinced by this approach, I still recommend to give it a try.
To achieve the simplest interface, it has some useful hotkeys (list them with ctrl-h).
A way to open files quickly (a little bit like launchy or gnome-do), details can be found on the development blog.
Snippets (the fastest way to code).
To put it short, it tries to apply the 'Less is more' design. Turns out it is a lot more practical than most editors/IDE out there, and it still stays simple.
I thought python 3.1.2 doesn't work in Netbeans. today i have it a try on netbeans 6.9.1. its working! now i need to compare it with PyDev.