Of all the metrics you could use to gauge the popularity and success of a language, one surefire factor is the number of development environments available for it. Python’s rise in popularity over the last several years has brought with it a strong wave of IDE support, with tools aimed both at the general programmer and those who use Python for tasks like scientific work and analytical programming.
These six IDEs with Python support cover the gamut of use cases. Some are multilanguage IDEs that have Python support through an add-on or a repackaging of another product with Python-specific extensions. Each benefits a slightly different audience of Python developer, although many strive to be useful as universal solutions.
A good number of the IDEs today are frameworks outfitted with plugins for specific languages and tasks, rather than apps written from the inside out to foster development in a given language. To that end, your choice of IDE may be determined by whether or not you have experience with another IDE from the same family.
For those who don’t have such experience, PyCharm is one of the best places to start. It’s friendly to newcomers, but not hamstrung in its feature set. In fact, it sports some of the most useful features among all of the IDEs profiled here. Many of those features are available only in the for-pay version of the product, but there is plenty in the free version to help a fledgling developer get started.
LiClipse and the Python Tools for Visual Studio (PTVS) are good choices for developers already intimately familiar with Eclipse and Microsoft Visual Studio, respectively. Both are full-blown development environments -- as full-blown as you’re going to find -- that integrate Python quite nicely. However, they’re also sprawling, complex applications that come with a lot of cognitive overhead. If you’ve already mastered either of them, you’ll find it a great choice for Python work.
The Python incarnation of ActiveState’s Komodo IDE is a natural for those who have already used the Komodo IDE for some other language, and it has unique features (like the regular expression evaluator) that ought to broaden its appeal. Komodo deserves a close look from novices and experts alike.
Spyder is best suited to working with IPython or the other scientific-computing tools in distributions like Anaconda, rather than as a development platform for Python generally. Finally, IDLE is best reserved for quick-and-dirty scripting, and even on that count, it might take a backseat to a standalone code editor with a Python syntax plugin. That said, IDLE is always there when you need it.
IDLE
IDLE, the development environment included with most every installation of Python, could be considered the default Python IDE. However, IDLE is by no means a substitute for a full-blown IDE; it’s more like a fancy file editor. Still, IDLE remains one of the default options for Python developers to get a leg up with the language, and it has improved incrementally with each release of Python, especially with Python 3.5. (See this page for interesting discussion of the recent efforts to improve IDLE.)
IDLE is built entirely with components that ship with a default installation of Python. Aside from the CPython interpreter itself, this includes the Tkinter interface toolkit. One boon of building IDLE this way: It runs cross-platform with a consistent set of behaviors. As a downside, the interface can be terribly slow. Printing large amounts of text from a script into the console, for instance, is many orders of magnitude slower than if the script is run directly from the command line.
IDLE has a few immediate conveniences. It sports a built-in read-eval-print loop (REPL), or interactive console, for Python. In fact, this interactive shell is the first item presented to the user when IDLE is launched, rather than an empty editor. IDLE also includes a few tools found in other IDEs, such as providing suggestions for keywords or variables when you hit Ctrl-Space, and an integrated debugger. But the implementations for most of these features are primitive compared to other IDEs and hidebound by Tkinter’s limited selection of UI components. And the collection of third-party add-ons available for IDLE (one such project is IdleX) is nowhere near as rich as you’ll find with other IDEs.
In sum, IDLE is best for two scenarios. The first is when you want to hack together a quick Python script, and you need a preconfigured environment to do so. The second is for beginners who are just getting their legs. Even beginners will quickly need to graduate to a more robust option.
IDLE’s main advantage is that it comes packaged with CPython, so it's useful for quick-and-dirty work or as an introduction to beginners. But it’s quickly outgrown.
Spyder
Spyder is short for "Scientific PYthon Development EnviRonment." It’s intended for use as a workbench for scientific computing with Python, and that’s reflected in the feature set, the packaging, and the overall behavior of the IDE. Spyder has useful features for general Python development, but unless you work mainly with IPython and scientific computing packages, you’re probably better off with a different IDE.
The biggest reason not to use Spyder as a general-purpose Python development environment isn’t the feature set, but the setup process. Spyder is not delivered as a standalone executable in the manner of a product like Visual Studio or PyCharm. Instead, it’s installed as a Python package. Your easiest path to Spyder is to install a Python distribution that comes with it preloaded, such as Continuum Analytics’s Anaconda.
IDLE Komodo LiClipse PyCharm PTVS Spyder Cython support No Yes (1) No Yes (3) No No Version control No Yes Yes Yes Yes Yes (5) Graphical debugger No Yes Yes Yes Yes No IPython support No No No Yes Yes (4) Yes Macros No Yes Yes (2) Yes (2) Yes No Multiple interpreters No Yes Yes Yes Yes Yes Refactoring No Yes Yes Yes Yes No Database integration No Yes Yes (2) Yes (3) Yes No HTML/CSS/JavaScript No Yes Yes Yes Yes (3) No
Spyder includes IPython, which is a replacement for the conventional Python console. When you type commands into IPython, the results can be interactively explored. Each command can be treated as a “cell,” or a segment of code that can have its output stored and collated.
Spyder adds to this by integrating cell behaviors into its code editor. If you insert specially formatted comments into any Python script, you can divide it into cells and execute those cells in the IPython interface in any order. This way, it’s easy to use Spyder to prototype cells for placement into an IPython notebook later on.
For debugging, Spyder uses Python’s built-in Pdb debugger. The command-line interface for Pdb is a far cry from the more sophisticated graphical debuggers found in PyCharm or LiClipse, although you can install the Winpdb graphical debugger as an optional add-on. Unfortunately, you can’t use Winpdb with Python 3, as it has dependencies on packages that are still only available in Python 2 (specifically, wxPython). To that end, most people will be stuck with Pdb.
Spyder is also limited compared to other IDEs in its integration with version control systems like Git and Mercurial. If you’re working in an initialized project repository, files in that project will show right-click context menu items for the repository. That said, there’s no version control mechanisms built directly into Spyder; you need to have the appropriate version control application already installed on a system level, with its executables available from the system path. Spyder doesn’t include tools for managing repositories in its UI, either. These shortcomings aren’t so bad if you’re already in the habit of managing repositories yourself, but they amount to additional hurdles if you’re not.
Spyder does have useful features for general Python development. One that immediately caught my eye is the variable explorer pane in Spyder’s interface. As you type commands into IPython, any variables created are logged there and can be explored interactively. Another useful tool is the User Module Deleter. Enable it and the Python interpreter will reload all modules from scratch when it executes a Python script. This way, any changes made to a module’s code can be applied to a running program without having to restart the whole application.
Spyder’s toolset is not as advanced as that of some other IDEs here, but its variable explorer and IPython integration are useful for data science work.
ActiveState Komodo IDE
ActiveState’s line of IDE products includes versions for nearly every major language. The company’s approach to this is a little like how LiClipse works: Take the basic product (in this case the Komodo IDE) and outfit it with add-ons for Python development.
Komodo is best suited to those who are already familiar with incarnations of Komodo for other languages. People with such experience under their belts will have no trouble diving into the Python product. If you’re coming in cold, there are some UI quirks worth noting. For instance, the app menu bar isn’t exposed by default; you have to click on the hamburger menu at the top right or tap the Alt key to show it. It’s meant to keep matters clean and simple, but may be too minimalist for some tastes.
On the other hand, some of the interface choices are immediately appealing. I particularly liked the “minimap,” a zoomed-out preview of the code in the editor, that lets you leap at a glance to any part of the file you’re editing. LiClipse has a similar feature, but Komodo’s implementation is easier to work with.
Most Python IDEs are outfitted with the likes of Python-specific syntax checking or code linting. Komodo IDE has all that, but it's also been designed to support versions 2 and 3 of the language at the same time. If you want to launch a Python shell, for instance, and you have interpreters for both versions of Python available in your system path, you can explicitly choose either version. I’ve often needed to run quick tests of the behaviors of a given statement in Python 2 and Python 3 side-by-side, and this is a handy way to do so.
Komodo provides you with an option to apply multiple run or debug configurations for an application, but it’s a little less flexible than a similar feature in LiClipse. When you launch an app, you’re given a choice of profiles to apply to the program. You can disable the profile chooser and jump straight into running a profile, but the disabling can only be done on an applicationwide basis, not for a particular project. I prefer LiClipse’s toolbar dropdown menu from which you can select a given profile or launch the most recently used profile with a click.
One truly wonderful inclusion is a regular expression toolkit. Type a regular expression in one pane of this tool, provide some sample data to apply it to in a second pane, and the results appear in a third. The tool also supports multiple flavors of regex, Python included, and even shows you the results of match, split, and replace operations. I struggle all the time with crafting working regexes, so this tool is a godsend.
Another useful out-of-the-box feature is a catalog of common code snippets for Python. Click on “walk,” for instance, and the editor inserts the boilerplate code to use Python’s function to traverse directories, one of the functions whose syntax and usage I can never remember offhand. Other languages are included, too. For instance, if you need to slip standard-issue HTML into a Django template you’re cooking up, Komodo has you covered.
The default Python distribution comes with support for SQLite out of the box. Komodo IDE complements this by providing a built-in explorer for SQLite databases. It’s sort of like a stripped-down version of the “workbench” desktop apps provided for MySQL or Microsoft SQL Server. The interface is clunky and unappealing, but it’s perfectly suitable for quick-and-dirty inspection or spot editing of a database. It’s not intended to serve as a full-blown database IDE.
You’ll find many other useful features in Komodo, even if they don’t specifically target Python. The macro recorder allows you to record and play back common actions, although it doesn’t seem to record some types of actions such as choosing which app profile to use when launching an app. Another feature allows real-time collaboration between Komodo users, though they'll need to sign up for accounts with ActiveState to access the service.
Komodo’s UI may take some getting used to if you’re coming from another IDE, but the collection of tools is impressive.
LiClipse
The Eclipse IDE is often criticized as slow and overloaded, but its broad language support and gallery of development add-ons make it a powerful and valuable tool. Python is supported in Eclipse via the PyDev add-on. If you’re using Eclipse for nothing other than Python development, your best bet is to grab LiClipse. (Throughout this review, I’ll be using LiClipse as shorthand for the bundle of features provided by LiClipse and PyDev together.)
LiClipse is a repackaging of Eclipse with PyDev, along with a slew of other Eclipse components meant to enhance the user experience. When launched, LiClipse looks and behaves much like the regular edition of Eclipse, barring the LiClipse branding and icons, so experienced Eclipse users shouldn’t have much trouble configuring the workspace to their liking. If you’re not experienced with Eclipse, you will need some time to learn how Eclipse’s workspace operates (this aspect of Eclipse is routinely criticized). In that sense, LiClipse is best for people who are already comfortable with Eclipse, perhaps from working in it through another language.
Leave a Comment