Compared to C++ or Java, comparatively few IDEs exist for Python. This notwithstanding, most programmers' editors have a Python mode, and you can find a number of useful tools for Python development.
Audience: Linux developers with a Windows background.
Description: Chances are, your favorite editor supports Python. My own preferred editor, NEdit, has good Python syntax highlighting but doesn't try to be overly clever with indenting rules—it also cannot run Python from the editor. Still, NEdit does have keystrokes that are very much like those of most Windows editors, which is a blessing because I spend much of my daytime development work on Windows. NEdit runs on only X11 systems.
XEmacs and VIM
Audience: Traditional Unix developers.
Description: If you want more intelligent indentation and you aren't afraid of some serious learning, try XEmacs—it has the most extensive Python support of all of the editors. VIM has a good Python mode too, but I don't personally like the autoindenting. Both Emacs and Vim are available on almost any platform.
Audience: Professional software developers.
Description: A couple of commercial editors (such as Visual Slickedit) offer Python support, but I do not feel that they are really worth the effort. For instance, Visual Slickedit is as involved and idiosyncratic as Emacs, but it costs a great deal of money.
Audience: All Python developers.
Description: Three IDEs are worth mentioning. The first is IDLE, which you already have—it's hidden in the Tools subdirectory in the Python distributions,. IDLE has a good class browser, but the editor isn't very strong: it's a bit slow and doesn't allow for extensive customization or scripting. IDLE runs everywhere Python and Tkinter runs, which excludes Macintosh. IDLE is not suited for very intensive development, however, due to its lack of speed and its awkward menu interface; however, to be fair, a lot of people do all of their Python work with IDLE.
Audience: Windows developers.
Description: This is a Windows-only IDE, but it's very, very comfortable. It's not included with the standard Python distribution, but you can get it at thePython Web site. Pythonwin has a good source navigation, a useable debugger, an excellent (folding!) editor, integrated help, and a COM browser. Another nice feature is a Python syntax checker that can run without running your script. Pythonworks
Audience: Professional developers.
Description: The last recommended IDE is Pythonworks, from Secret Labs. Pythonworks looks gorgeous—it's written in Tkinter but runs only on Windows. It's also very expensive, but it promises to have a great editor, a visual layout editor, and a good debugger.
Debuggers: IDLE, PyDebug, DDD, Pythonwin
Audience: All Python developers.
Description: Unfortunately, I can't give a good recommendation for a debugger. I have tried four: the IDLE debugger, PyDebug, DDD with a pydb interface, and the Pythonwin debugger. None of these are really as good as you'd hope. For instance, none of these debuggers supports altering the code while running the script. This is a pity because Python offers all the hooks to write a really good debugger—and I fully intend to write one, one day, unless you beat me to it! Another problem is that most Python debuggers don't know where to stop: If you're not careful, you get lost in the system library, which can be terribly confusing—especially if you wander into the functions that the debugger uses to print its messages!
Profilers: Python Profiling Module
Audience: Developers who have a performance problem.
Description: Python offers a standard profiling module and, in contrast to the debugger situation, this is quite ample. You can easily use this to locate your bottlenecks. This profiler is included in your Python distribution—just look at the library reference, Chapter 10.
Class Browsers: IDLE, Pythonwin, Kpybrowser
Audience: Developers who are building a large application.
Description: Python has a standard module, pyclbr.py, that offers services for class browsers. I know of three implementations: one in IDLE, one in Pythonwin, and one that I have written myself, Kpybrowser, which works only with Qt or KDE. Kpybrowser enables you to open new modules and module paths in the browser and can be made to work with your preferred editor.
blog comments powered by Disqus