3.2. Python Development Environments
The Python interpreter's built-in interactive mode is the simplest development environment for Python. It is a bit primitive, but it is lightweight, has a small footprint, and starts fast. Together with an appropriate text editor (as discussed in "Free Text Editors with Python Support" on page 27), and line-editing and history facilities, the interactive interpreter (or, alternatively, IPython) offers a usable and popular development environment. However, there are a number of other development environments that you can also use.
Python's Integrated DeveLopment Environment (IDLE) comes with the standard Python distribution. IDLE is a cross-platform, 100 percent pure Python application based on Tkinter (see Chapter 17). IDLE offers a Python shell similar to interactive Python interpreter sessions but richer in functionality. It also includes a text editor optimized to edit Python source code, an integrated interactive debugger, and several specialized browsers/viewers.
3.2.2. Other Free Cross-Platform Python IDEs
IDLE is mature, stable, easy to use, and fairly rich in functionality. Promising new Python IDEs that share IDLE's free and cross-platform nature are emerging. Red Hat's Source Navigator (http://sources.redhat.com/sourcenav/) supports many languages. It runs on Linux, Solaris, HPUX, and Windows. Boa Constructor (http://boa-constructor.sf.net/) is Python-only and still beta-level, but well worth trying out. Boa Constructor includes a GUI builder for the wxWindows cross-platform GUI toolkit.
eric3 (http://www.die-offenbachs.de/detlev/eric3.html) is a full-featured IDE for Python and Ruby, based on the PyQt 3.1 cross-platform GUI toolkit.
The popular cross-platform, cross-language modular IDE Eclipse has plug-ins that support CPython and Jython; see http://pydev.sourceforge.net/ for more information.
Another new but very popular cross-platform Python editor and IDE is SPE, "Stani's Python Editor" (http://stani.be/python/spe/blog/).
3.2.3. Platform-Specific Free Python IDEs
Python is cross-platform, and this book focuses on cross-platform tools and components. However, Python also provides good platform-specific facilities, including IDEs, on many platforms it supports. On Windows, in particular, ActivePython includes the PythonWin IDE. PythonWin is also available as a free add-on to the standard Python distribution for Windows, part of Mark Hammond's win32all extensions (see http://starship.python.net/crew/mhammond).
3.2.4. Commercial Python IDEs
Several companies sell commercial Python IDEs, both cross-platform and platform-specific. You must pay for them if you use them for commercial development and, in most cases, even if you develop free software. However, they offer support contracts and rich arrays of tools. If you have funding for software tool purchases, it is worth looking at these in detail and trying out their free demos or evaluations. Most of these tools work on Linux and Windows.
Archaeopterix sells an excellent Python IDE, Wing, that is particularly noteworthy for its powerful source-browsing and remote-debugging facilities (http://wingware.com/). theKompany sells a Python IDE, BlackAdder, that also includes a GUI builder for the PyQt GUI toolkit (http://www.thekompany.com/products/blackadder).
3.2.5. Free Text Editors with Python Support
You can edit Python source code with any text editor, even simplistic ones such as Notepad on Windows or ed on Linux. Powerful free editors also support Python, with extra features such as syntax-based colorization and automatic indentation. Cross-platform editors let you work in uniform ways on different platforms. Good programmers' text editors also let you run, from within the editor, tools of your choice on the source code you're editing. An up-to-date list of editors for Python can always be found at http://wiki.python.org/moin/PythonEditors.
The best of the best for sheer editing power is the classic Emacs (http://www.emacs.org, and http://www.python.org/emacs for Python-specific add-ons). However, Emacs is not the easiest editor to learn, nor is it lightweight. My personal favorite is another classic, vim (http://www.vim.org), the modern, improved version of the traditional Unix editor vi, not quite as powerful as Emacs but still well worth considering. vim is fast, lightweight, Python-programmable, and runs everywhere in both text-mode and GUI versions. vim, like vi, has a modal design, which lets you use normal keys for cursor movement and text changes when in command mode. Some love this as an ergonomic trait, minimizing finger travel. Others find it confusing and detest it. Newer editors challenge the classic ones. SciTE (http://www.scintilla.org) builds on the Scintilla programming language editor component. FTE (http://fte.sf.net) is also worth trying.
Other advanced free editors with Python syntax support are platform-specific. On Windows, try SynEdit (http://www.mkidesign.com/syneditinfo.html). On Unix-like systems, try Glimmer (http://glimmer.sf.net) and Cooledit (http://freshmeat.net/projects/cooledit/), which, like vim, also offers Python programmability, but without vim's modal architecture. On Mac OS X, TextWrangler (http://www.barebones.com/products/textwrangler/index.shtml) is quite powerful and supports Python well. SubEthaEdit (http://www.codingmonkeys.de/subethaedit/), free for noncommercial use and sold (quite cheaply) for commercial uses, is uniquely featured and optimized to let multiple programmers cooperate by editing the same files, simultaneously, on different Macs on the same LAN.
A vast summary of editors (free and nonfree) that are particularly suitable for Python, including IDEs, can be found at http://wiki.python.org/moin/PythonEditors.
3.2.6. Tools for Checking Python Programs
The Python compiler does not check programs and modules thoroughly: the compiler checks only the code's syntax. If you want more thorough checking of your Python code, there are several tools you may download and install for the purpose. PyChecker, available at http://pychecker.sourceforge.net/, is simple to install and use: it relies on the normal Python compiler to turn Python source into bytecode, then imports the bytecode and checks all code for many kinds of errors and anomalies. Pyflakes, available at http://divmod.org/projects/pyflakes, is faster than PyChecker, although not quite as thorough, and does not import the modules it's checking, which may make its use safer. PyLint, available at http://www.logilab.org/projects/pylint, is very powerful and highly configurable. PyLint is not quite as lightweight and easy to install as PyChecker or Pyflakes, since it requires some other packages freely downloadable from Logilab; however, PyLint amply repays the effort by being able to check many kinds of stylistic aspects in a highly configurable way based on customizable configuration files.