This article was orginally published on python-programming.com The content is unchanged but I have updated formatting so the article is equally readable as before.
Programmers love their tools and they love to talk about them. Plenty of questions in the Python community are similar to "What IDE should I use?".
In this lengthy article we will take a good look at both PyCharm and Komodo, two well known IDE's available today.
In this Python IDE comparison we will take a look at the latest versions of PyCharm and Komodo IDE. Jetbrains release PyCharm 5 this week and ActiveState followed with version 9.3 of their Komodo IDE. Both releases are quite important since Python 3.5 is now fully supported and both contain a number of cool new features.
Python IDE comparison
Writing a comparison between IDE's is pretty damn hard. The feature set is immens compared to other software and it really takes a while before you can appreciate and fully grasp the way a feature is implemented. Throughout this review I have tried to let my personal preference out of it.
PyCharm on the other hand is a product based on the IntelliJ IDEA platform and is completely geared towards Python development. So where ActiveState developers had to make compromises to appeal to developers of various stacks, Jetbrains could just go wild and give PyCharm all features Python developers craved.
1. Python interpreter support
Having good interpreter support is essential for any IDE. If your IDE doesn't know about certain language constructs or can't connect to the interpreter of your choice, development turns hard. Both Komodo and PyCharm support the latest Python 3.5 and the new language constructs (such as the awesome asyncio).
I have found that Komodo handles the basic options such as local Python 2 and Python 3 interpreters very good. You won't have any problems switching between interpreters while working on different projects or even in the same project.
Setting up a remote interpreter in Komodo is (compared to PyCharm) quite the hurdle to pass. You are required to manually install a number of tools on the remote host to setup and start a remote debugging session. My attempts to get a remote interpreter / debugging session working using Komodo weren't successful and I was too time constrained to search for a working solution.
PyCharm has extensive support for both local and remote interpreters. You can setup any number of interpreters and use them in your projects. PyCharm supports remote interpreters over SSH, in Vagrant virtualmachines and in Docker images. You can also create local virtualenvironments straight from the PyCharm IDE.
Running a Python application from the PyCharm IDE requires you to create a run configuration. Using these configurations you can specify what script to run, what interpreter to use and various other options.
The PyCharm run configurations also tie in closely with the framework support that PyCharm offers. Creating a run configuration for any of the supported web frameworks allows you set host and port options for example. Creating a Grunt run configuration allows you to enter the required Gruntfile and select the appropriate tasks, and so on.
Setting up a remote interpreter is very easy using PyCharm. You can add a remote interpreter via an SSH connection, a Vagrant VM or a Docker box. Setup your credentials or the path to the virtual machine and PyCharm will connect to the remote interpreter. Available packages will be indexed and you can easily install new packages via pip straight from the PyCharm UI.Starting a remote debugging session was a matter of simply creating a new run configuration that pointed to the correct remote interpreter. PyCharm handled the debugging just like debugging a local application.
In a basic workflow both IDE's are sufficiently capable of handling multiple interpreters, both local and remote. PyCharm has a more polished and extensive feature set than Komodo, a plus for both beginners (easy to setup) and experts (more powerful).
The approach to projects differ between both IDE's. PyCharm forces a very strict project structure on its users, whereas Komodo offers a project structure as an extra means of grouping your related files.
The Komodo IDE is usable straight from the start without creating any project. A project in Komodo IDE serves as an collection to group a set of related files. This makes working with a large number of related files more manageable as Komodo shows your entire directory structure by default.
Creating a project in Komodo is little more than saving .komodoproject file in a particular directory.
When creating a new project in PyCharm you can choose between a number of different project types. PyCharm has various levels of framework support to make life easier for you. Selecting the right project type when creating a new project lets PyCharm set the right options from the start.
The freedom you get from Komodo, just editing any file you want without setting up a project, has both it's benefits and drawbacks. The same applies to the forced project structure PyCharm uses.When choosing to work with a project I found Komodo to lack the many integrations and features PyCharm does offer with its projects.
I'm a big adept of testing, unit testing and Test Driven Development (TDD). So for me it is very important to have an IDE that really integrates very well with a testing workflow.
While getting to know Komodo better for this review I spent many hours tweaking and using it on some of my pet projects.
The features in Komodo that are supposed to help you running your test suites don't really have to offer much above a minor GUI layer above standard testing tools. The output generated by Komodo when a test plan is run comes straight from the output of your testing framework.
The support for testing frameworks in PyCharm is excellent. The output of your testing framework is analysed and displayed in a useful manner: you can easily hide all passed tests and just focus on the tests that failed during the last execution. PyCharm also analyses your test suites and allows you to seamlessly switch between running a complete suite or a single test case.
PyCharm offers builtin support for Coverage, a popular tool to measure the amount of code that is supported by your testcases. Using coverage you can easily measure how complete your test coverage is and what parts of your code are untested.Further features include the possibility to auto-run tests when your code changes (a life saver if you really want to use TDD) and the ability to import and export test results.
I was really bummed out by the lack of features offered by Komodo. Compared to PyCharm it almost seems like support for modern testing frameworks was an afterthought (or no thought at all). PyCharm makes testing however a first class citizen of it's IDE feature set.
4. Version Control Integration
Having access to your favourite version control system straight from your IDE is a must have for many developers. By having control over common used features such as branching, comparing version, committing and checking out without having to leave your IDE your work flow really speeds up.
For this comparison I decided to focus on Git integration in Komodo and PyCharm. The old version control systems such as CSV or Subversion are losing ground quickly to decentralised systems like Git and Mercurial. Git is my system of choice and most numbers seem to indicate that Git is the most popular system as well.
The basic implementation of Git in Komodo IDE requires you to keep on using the Git command line tools or another Git UI application. You can't create a new repository or manage branching from the Komodo UI.
The Git integration offered by PyCharm is excellent. The IDE covers all basic Git features and even supports the more advanced operations such as rebasing. The diff viewer offered by PyCharm is very powerful and merging branches can be done straight from the IDE, including resolving merge conflicts.
When it comes to VCS integration, PyCharm comes out as the more complete IDE of the two. The Git integration is very feature complete and is nicely integrated with the rest of the IDE. VCS support in Komodo on the other hand is a very basic GUI wrapper above the standard tools.
5. Plugin and third party support
Being programmers, we never really are content with anything. Even after carefully picking the IDE that is best for you and spending way too much time configuring options and various settings, you'll want more. And more is what we will get, because both Komodo and PyCharm support extensions and plugins to extend the functionality of the IDE.
Extending the Komodo functionality is possible thanks to Komodo Extensions. Compared to the PyCharm plugin repository the ActiveState offering is a bit sparse and hard to evaluate. Browsing and installing the extensions is done from within the IDE itself, but using a minuscule dropdown list.
PyCharm is built upon the IntelliJ IDEA foundations and brings in a load of available plugins that you can download and install in the IDE. Currently the PyCharm plugin repository has 447 plugins available.
Useful plugins include for example the gitignore plugin that enables you to generate .gitignore files to include in your project. Another great plugin (mandatory if you would ask me) is the ideavim plugin that emulates vim and all its power features right into PyCharm (or any IntelliJ based product for that matter).
Both IDE's offer a lively eco-system of plugins and extensions. PyCharm benefits from the shared IntelliJ platform that makes a wide range of plugins also available to PyCharm. Installing and using plugins is more user friendly in PyCharm than it is in Komodo.
When choosing an IDE with this level of functionality, free doesn't go a long way. Both IDE's have a cost associated with them and depending on wether you're an individual or a business (or working for a business) the cost varies.
When you would purchase one license of each IDE, valid for one particular version, the cost can be summed up in the following table.
|Personal License||$ 99||$ 89|
|Business License||$ 295||$ 199|
If you prefer to keep up to date with the latest and greatest, you will want to get updates and product support. The details vary for each product but in the table below you can see the total cost for three years worth of IDE goodness
|Personal License||$ 273||$ 213|
|Business License||$ 556||$ 477|
As you can see, in both cases the cost of PyCharm is less than that of Komodo IDE.
While writing this Python IDE comparison, I have done my utmost best to review both products equally and without letting my personal preference get in the way. I spent many days with both Komodo and PyCharm while working on projects both professional and personal.
That said, after our review it was obvious to me that PyCharm offers the most complete and polished Python IDE experience. The combination of framework support, code insight/refactoring and excellent Git integration make PyCharm a clear winner for me. The features offered by Komodo are, especially when compared to the implementation in PyCharm, very basic and often just a basic GUI wrapper above existing commandline tools.
For anyone doing serious Python development, wether you're a professional developer or an serious hobby programmer, PyCharm is worth the investment in my opinion.