The best IDEs for Python developers

The best IDEs for Python developers

Every artisan needs their tools, and software developers need their own programs to create elegant work. These integrated development environments (IDEs) are purpose-built to make it as easy as possible to write code and build applications. Many IDEs are designed with specific features to help craft properly structured software source code in specific languages, and Python is no exception.

The programming language has its own coding environment called IDLE. This serves a Python programmer's basic needs when running and writing shorter programs, but there are other, more advanced environments that offer better IDE functionality. We’ve tested a range of options to find the best IDEs for every Python programmer.

These IDEs are all excellent tools for Python coders, but each will have their own learning curve. Which one you pick will depend on your own level of expertise, and what you use Python for. One of the great things about this collection is that they're all either open-source programs or have a community version for you to try out, making it easy for you to test them and see which one suits your needs the most.

Emacs

A screenshot of the emacs IDE

Emacs is a text editor at heart, but is so flexible that you can make it do most things. Its text-based nature, fast and configurable keyboard shortcuts, and extensible architecture nature make it an IDE of choice for many no-nonsense coders.

Running on Windows, macOS, Linux, and BSD operating systems, Emacs comes with its own mode for editing Python files which handles basic syntax highlighting and code indentation. For a more rounded development environment though, you'll need a third-party library like elpy. You can install this from within Emacs using the built-in list-packages command or by coding it into your init.el file. This offers extra features including support for Python virtual environments, auto-completion, and error indicators for bad syntax.

Because Emacs is extensible, you can also add in things like linting, which checks code style against Python's PEP 8 code standard. There are third-party libraries to connect elpy with the autopep8 and black Python linting tools.

Emacs takes some getting used to for any user, and Python coders are no exception. However, after using this tool extensively for coding we’ve found the learning curve well worth it. Its practical text-based interface makes coding faster in the long run.

Eric

A screenshot of the Eric IDE

Eric is another powerful Python IDE and is written in Python itself, meaning that it runs on any system that the language is compatible with. Whereas Emacs encourages people never to lift their fingers from the keyboard, this program uses a GUI for mouse jockeys. It features the regular syntax highlighting and auto completion features, but goes a lot further, with extra goodies such as a class browser and built-in integration with version control systems such as Mercurial or Git.

Eric's true strength lies in its project management features, though. It supports handy tools like an integrated to-do item generator that will help you keep track of outstanding coding tasks, along with integrated chat and shared editing features for collaborating with teams.

Upon installation, this free open-source IDE offers a configuration interface that lets you tweak many facets of the system. The three-pane standard interface isn’t the prettiest we’ve seen, but it is highly functional, offering a bewildering but complete array of options. This is an IDE that gives you the basic features you want for a simple solo coding project but will definitely take some work with the documentation to get accustomed to its many features. On the upside, it will also support you as you scale up to more sophisticated projects.

Jupyter Notebook

A screenshot of the Jupyter Notebook IDE

Think of Jupyter Notebook as a quasi-IDE in your browser, allowing you to create, save, and open notebook documents containing rich-text elements and code. Jupyter Notebooks runs in your web browser, but because the relevant files run on your local computer you won’t need an internet connection to use it.

Written in Python, Jupyter Notebook lacks some features found in other popular IDEs out of the box, such as a built-in debugger, but it makes up for this with its literate programming approach. Literate programming allows you to mix regular text with code, so that you can document what your code does alongside the code itself. It's great for creating tutorials that others can learn from, or simply for keeping track of your own Python projects as they evolve.

You can create sections of Python code within your document that you can run at any time. They are state persistent, meaning that you can use the output of one section (such as a variable assignment) when running another section of code.

This was the feature that we found most useful when using this environment. Writing Python in a notebook is like telling the story of your program in a web page. It’s great for data scientists that want to explain how they imported a CSV file and used Numpy to evaluate the data step by step.

For users wanting more advanced functionality, JupyterLab offers a next-generation interface and a visual debugger. This project, which the Project Jupyter team says will eventually replace Jupyter Notebook, is also extensible with third-party plugins.

PyCharm

A screenshot of the PyCharm IDE

Unlike the other IDEs on this list, JetBrains' PyCharm is a paid program with built-in tooling designed specifically for data scientists. For those with more general needs, however, the company also offers PyCharm Community Edition. This stripped-back open source version is freely downloadable, and while it’s less functional for scientific research, it’s still perfectly usable for pure Python coders.

Available for Windows, macOS or Linux, PyCharm is one of the most feature-rich Python IDEs. Alongside the debugger and intelligent code editor, it offers refactoring tools and an integrated test runner. It also has built-in support for web development frameworks such as Flask or Django, and integrates with data science tools such as MatPlotLib.

One of the first things we noticed when using PyCharm is that JetBrains designed it from the beginning with the user experience in mind. The interface is smooth and sleek, striking us with a more professional feel than Eric’s. On the other hand, this program, like most of JetBrain’s other IDEs, is written in Java, meaning that you’ll need more resources to run it. It was a beast of an install, with a downloadable file weighing in at over half a Gigabyte.

PyDev

A screenshot of the PyDev IDE

Eclipse is a venerable open-source IDE running on Windows, macOS, or Linux that dates back to 2001, and features Python support thanks to the third-party PyDev plugin.

This plugin comes with lots of features out of the box, including not only a local debugger, but a remote debugger for operating over a network. It also includes refactoring tools and several integrations. For example, it links to Python's built-in unittest testing framework, and the Django Python-based web application framework. You can use even generate reports showing your to-do tasks and look at the code covered by your tests.

This tool's strong plugin support makes it highly extensible, with useful features including source code version control support and code completion. We found this program, which like PyCharm is built on Java, lacked JetBrains’ polished look and feel. It came with a steep learning curve. On the other hand, it was feature-rich and 100% free.

Spyder

A screenshot of the Spyder IDE

Like Jupyter Notebook, Spyder is a tool that anyone can use but which really shines in data science applications. It's a full-fledged IDE with an integrated debugger, and an editor with tools that include a function and class browser for quick jumps to important chunks of code.

This tool really comes into its own with its advanced visual analysis. Its variable explorer includes the ability to plot time series and edit arrays produced using Numpy, which is a favourite data manipulation module among Python-loving data scientists.

The IDE, which runs on Windows, macOS, or Linux, also features a plugin framework that allows it to integrate with other Python tools. It can connect with Jupyter Notebook, for example, and can also support testing via unittest.

Spyder requires Linux users to install it as part of a data science-friendly Python distribution, Anaconda. Some might not want to go to these lengths if they’re happy with the standard Python that came natively installed. This demonstrates that Spyder is a tool for data scientists first and foremost.

Thonny

A screenshot of the Thonny IDE

While the likes of PyCharm, PyDev, and Spyder target die-hard Python professionals and data scientists, Thonny is a simpler program for beginners. It's the kind of IDE that high-school students use to learn Python's basics, and features a simple user interface that omits advanced options to avoid bewildering newbie coders.

Don't be fooled by its simple user interface, though; those advanced options are there. It still has plenty of features that will grow with students as they learn more about Python’s capabilities. You can quickly get to its simple step-through debugger, and can explore variables either in a simple view or a more advanced one showing extra information.

This system also makes installation easy, including its own Python implementation out of the box and a simple interface for installing extra packages using Python PIP. We used this system to co-code with a teenaged relative who was using it for computer science at school. It was easy to install and get up and running, enabling us to get into code examples quickly with minimal fuss.

Visual Studio Code

A screenshot of the Visual Studio Code IDE

Visual Studio might be the more fully-featured of Microsoft’s two coding platforms, but Python coders might feel more at home with Visual Studio Code, its stripped-back stablemate. Based on the Electron framework (formerly Atom), VS Code is effectively a browser-based text editor framed in a desktop application. It's also an open source product, and therefore completely free, with versions available for Windows, macOS and Linux platforms.

VS Code is built with text editing in mind, but includes technologies originally found in Visual Studio to make it stand out for developers. Its IntelliSense feature makes short work of code completion, and its auto-indenting function makes it easy to format your Python code. It also features an interactive debugger along with support for variable watching.

Although the tool doesn't come with as many IDE features as Visual Studio out of the box, its plugin framework makes it extensible so that you can configure it with extra functions. A Microsoft-provided extension gives you support for the language from within VS Code, including Python awareness for IntelliSense, as well as Python-specific debugging and linting features.

VS Code also supports Python virtual environments, installation of Python packages using the built-in terminal, and support for Jupyter Notebook files, while the extension supports the unittest and PyTest testing libraries.

VS Code is a worthy addition to the IDE list. We liked its extensive features, but did find a slight lag when using this Electron-based program that disappeared on simpler tools like Thonny or the C-based Emacs. Still, if you want a self-contained program with copious features that doesn’t bog down your system quite so much as a Java-based behemoth, VS Code is worth trying.

Danny Bradbury

Danny Bradbury has been a print journalist specialising in technology since 1989 and a freelance writer since 1994. He has written for national publications on both sides of the Atlantic and has won awards for his investigative cybersecurity journalism work and his arts and culture writing. 

Danny writes about many different technology issues for audiences ranging from consumers through to software developers and CIOs. He also ghostwrites articles for many C-suite business executives in the technology sector and has worked as a presenter for multiple webinars and podcasts.