Python IDEs and Code Editors: The Complete Guide

Python IDEs and Code Editors (Guide)

by Jon Fincher Mar 13, 2018 editors python tools

Writing Python using IDLE or the Python Shell is great for simple things, but those tools quickly turn larger programming projects into frustrating pits of despair. Using an IDE, or even just a good dedicated code editor, makes coding fun—but which one?

Fear not, Gentle Reader! We are here to help explain and demystify the myriad of choices available to you. We can’t pick what works best for you and your process, but we can explain the pros and cons of each and help you make an informed decision.

To make things easier, we’ll break our list into two broad categories of tools—those built exclusive for Python development, and those built for general development we can use for Python. We’ll call out some Why’s and Why Not’s for each. Lastly, none of these are mutually exclusive, so you can try them out on your own with very little penalty.

But first…

What is an IDE and a Code Editor?

An IDE (or Integrated Development Environment) is a program dedicated to software development. As the name implies, IDEs integrate several tools specifically designed for software development. These tools usually include an editor tailored to handling code (for example, syntax highlighting and auto-completion); build, execution, and debugging tools; and some form of source control.

Most IDEs support many different programming languages and contain many more features, and therefore can be large, take time to download and install, and require advanced knowledge to use properly.

In contrast, a dedicated code editor can be as simple as a text editor with syntax highlighting and code formatting capabilities. Most good code editors can execute code and control a debugger, and the very best interact with source control systems as well. Compared to an IDE, a good dedicated code editor is usually smaller and quicker, but often less feature rich.

Requirements for a Good Python Coding Environment

So what things do we really need in a coding environment? Feature lists vary from app to app, but there are a core set of features which makes coding easier:

  • Save and reload code files
    If an IDE or editor won’t let you save your work and reopen everything later, in the same state it was in when you left, it’s not much of an IDE.
  • Run code from within the environment
    Similarly, if you have to drop out of the editor to run your Python code, then it’s not much more than a simple text editor.
  • Debugging support
    Being able to step through your code as it runs is a core feature of all IDEs and most good code editors.
  • Syntax highlighting
    Being able to quickly spot keywords, variables, and symbols on your code makes reading and understanding code much easier.
  • Automatic code formatting
    Any editor or IDE worth it’s salt will recognize the colon at the end of a while or for statement, and know the next line should be indented.

Of course, there are lots of other feaures you might want, like source code control, an extension model, build and test tools, language help, and so on. But the above list is what I’d see as “core features” that a good editing environment should support.

With these features in mind, let’s take a look at some general purpose tools we can use for Python development.

General Editors and IDEs With Python Support

Eclipse + PyDev

If you’ve spent any amount of time in the open-source community, you’ve heard about Eclipse. Available for Linux, Windows, and OS X at, Eclipse is the de-facto open-source IDE for Java development. It has a rich marketplace of extensions and add-ons, which makes Eclipse useful for a wide range of development activities.

One such extension is PyDev, which enables Python debugging, code completion, and an interactive Python console. Installing PyDev into Eclipse is easy—from Eclipse, select Help, Eclipse Marketplace, then search for PyDev. Click Install, and restart Eclipse if necessary.

Eclipse with PyDev installed

Pros: If you’ve already got Eclipse installed, adding PyDev is quick and easy. The learning curve for PyDev is non-existent for the experienced Eclipse developer.

Cons: If you’re just starting out with Python, or with software development in general, Eclipse can be a lot to handle. Remember when I said IDEs are larger and need more knowledge to use properly? Eclipse is all that and a bag of (micro)chips.

Sublime Text

Written by a Google engineer with a dream for a better text editor, Sublime Text is an extremely popular code editor. Supported on all platforms, Sublime Text has built in support for Python code editing, and a rich set of extensions (called packages) which extend the syntax and editing features.

Installing additional Python packages can be tricky - all Sublime Text packages are written in Python itself, and installing community packages often require you to execute Python scripts directly in Sublime Text.

Sublime Text code editor

Pros: Sublime Text has a great following in the community. As a code editor, alone, Sublime Text is fast, small, and well supported.

Cons: Sublime Text is not free, although you can use the evaluation version for an indefinite period of time. Installing extensions can be tricky, and there’s no direct support for executing or debugging code from within the editor.

To make the most of your Sublime Text setup, read our Python + Sublime Text setup guide and consider our in-depth video course that shows you how to craft an effective Python development setup with Sublime Text 3.

Atom

Available on all platforms, Atom is billed as the “hackable text editor for the 21st Century”. With a sleek interface, file system browser, and marketplace for extensions, open-source Atom is built using Electron, a framework for creating desktop applications using JavaScript, HTML, and CSS. Python language support is provided by an extension which can installed when Atom is running.

Atom code editor

Pros: Broad support on all platforms, thanks to Electron. Atom is small, and downloads and loads fast.

Cons: Build and debugging support aren’t built-in, but are community provided add-ons. Because Atom is built on Electron, it’s always running in a JavaScript process, and not as a native application.

GNU Emacs

Back before the iPhone vs Android war, before the Linux vs Windows war, even before PC vs Mac war, there was the Editor War, with GNU Emacs as one of the combatants. Billed as “the extensible, customizable, self-documenting, real-time display editor”, GNU Emacs has been around almost as long as UNIX, and has a fervent following.

Always free and available on every platform (in one form or another), GNU Emacs uses a form of the powerful Lisp programming language for customization, and various customization scripts exist for Python development.

GNU Emacs editor

Pros: You know Emacs, you use Emacs, you love Emacs. Lisp is a second language, and you know the power it gives you means you can do anything.

Cons: Customization means writing (or copy/pasting) Lisp code into various script files. If it’s not already provided, you may have to learn Lisp to figure out how to do it.

Plus, you know that Emacs would be a great operating system, if it only had a good text editor…

Be sure to consult our Python + Emacs setup guide to make the most of this setup.

Vi / Vim

On the other side of the Text Editor War sits VI (aka VIM). Included by default on almost every UNIX system and Mac OS X, VI has an equally fervent following. VI and VIM are modal editors, separating the viewing of a file from the editing of a file. VIM includes many improvements on the original VI, including an extensibility model and in-place code building. VIMScripts are available for various Python development tasks.

VIM text editor

Pros: You know VI, you use VI, you love VI. VIMScripts don’t scare you, and you know you bend it to your will.

Cons: Like Emacs, you’re not comfortable finding or writing your own scripts to enable Python development, and your’re not sure how a modal editor is supposed to work.

Plus, you know that VI would be a great text editor, if only it had a decent operating system.

If you’re going with this combination, check out our Python + VIM setup guide with tips and plugin recommendations.

Visual Studio

Built by Microsoft, Visual Studio is a full-featured IDE, in many ways comparable to Eclipse. Built for Windows and Mac OS only, VS comes in both free (Community) and paid (Professional and Enterprise) versions. Visual Studio enables development for a variety of platforms, and comes with it’s own marketplace for extensions.

Python Tools for Visual Studio (aka PTVS) enables Python coding in Visual Studio, and enables Intellisense for Python, debugging, and other tools.

Pros: Like Eclipse, if you already have Visual Studio installed for other development activities, adding PTVS is quick and easy.

Cons: Just like Eclipse, Visual Studio is a big download for just Python. Plus, if you’re on Linux, you’re out of luck - there is no Visual Studio install for that platform.

Visual Studio Code

Not to be confused with full Visual Studio, Visual Studio Code (aka VS Code) is a full-featured code editor available for Linux, Mac OS X, and Windows platforms. Small and light-weight, but full-featured, VS Code is open-source, extensible, and configurable for almost any task. Like Atom, VS Code is built on Electron, so it has the same advantages and disadvantages that brings.

Installing Python support in VS Code is very easy - the Marketplace is a quick button click away. Search for Python, click Install, and restart if necessary. VS Code will recognize your Python installation and libraries automatically.

Visual Studio Code editor

Pros: Thanks to Electron, VS Code is available on every platform, surprisingly full-featured despite having a small footprint, and open-source.

Cons: Electron means VS Code is not a native app. Plus, some people may have principled reasons to not use Microsoft resources.

Python Specific Editors and IDEs

PyCharm

One of the best (and only) full-featured, dedicated IDEs for Python is PyCharm. Available in both paid (Professional) and free open-source (Community) editions, PyCharm installs quickly and easily on Windows, Mac OS X, and Linux platforms.

Out of the box, PyCharm supports Python development directly - open a new file and start writing code. You can run and debug Python directly inside PyCharm, and it has support for source control and projects.

PyCharm IDE for Python

Pros: It’s the de facto Python IDE environment, with tons of support and a supportive community. It edits, runs, and debugs Python out of the box.

Cons: PyCharm can be slow to load, and the default settings may need tweaking for existing projects.

Spyder

Spyder is an open-source Python IDE that’s optimized for data science workflows. Spyder comes included with the Anaconda package manager distribution—so depending on your setup you may already have it installed on your machine.

What’s interesting about Spyder is that it’s target audience is data scientists using Python. You’ll notice this throughout. For example, Spyder integrates well with common Python data science libraries like SciPy, NumPy, and Matplotlib.

Spyder features most of the “common IDE features” you might expect, such as a code editor with robust syntax highlighting, Python code completion, and even an integrated documentation browser.

A special feature that I haven’t seen in other Python editing environments is Spyder’s “variable explorer” that allows you to display data using a table-based layout right inside your IDE. Personally, I usually don’t have a need for this but it does look neat. If you regularly do “data science work” using Python you might fall in love with this unique feature. The IPython/Jupyter integration is nice as well.

Overall I’d say that Spyder feels more “basic” than other IDEs. I like to view it more as a special purpose tool rather than something I use as my primary editing environment every day. What is nice about this Python IDE is that it is available for free on Windows, macOS, and Linux and that it is fully open-source software.

Spyder Python IDE Screenshot (Image source: https://github.com/spyder-ide/spyder)

Pros: You’re a data scientist using the Anaconda Python distribution.

Cons: More experienced Python developers might find Spyder too basic to work with on a daily basis, instead opting for a more complete IDE or customized editor solution.

Thonny

A recent addition to the Python IDE family, Thonny is billed as an IDE for beginners. Written and maintained by the Institute of Computer Science at the University of Tartu in Estonia, Thonny is available for all major platforms, with installation instructions on the site.

By default, Thonny installs with it’s own bundled version of Python, so you don’t need to install anything else new. More experienced users may need to tweak this setting so already installed libraries are found and used.

Thonny IDE for beginners

Pros: You’re a beginning Python user, and want an IDE that’s ready to roll.

Cons: More experienced Python developers will find Thonny too basic for most uses, and the built-in interpreter is something to work around, not with. Plus, as a new tool, there may be issues you find which may not have immediate solutions.

So Which Python IDE is Right for You?

Only you can decide that, but here are some basic recommendations:

  • New Python developers should try solutions with as few customizations as possible. The less that gets in the way, the better.
  • If you use text editors for other tasks (like web pages or documentation), look for code editor solutions.
  • If you’re already developing other software, you may find it easier to add Python capabilities to your existing toolset.

🐍 Python Tricks 💌

Get a short & sweet Python Trick delivered to your inbox every couple of days. No spam ever. Unsubscribe any time. Curated by the Real Python team.

Python Tricks Dictionary Merge

About Jon Fincher

Jon Fincher

Jon is currently teaching Python and Java in two high schools in Washington State. In a former life, he was a Program Manager at Microsoft.

» More about Jon

Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are:

Dan Bader

Dan

What Do You Think?

Real Python Comment Policy: The most useful comments are those written with the goal of learning from or helping out other readers—after reading the whole article and all the earlier comments. Complaints and insults generally won’t make the cut here.

Boost Your Python Skills

Master Python 3 and write more Pythonic code with our in-depth books and video courses:

Get Python Books & Courses »

Keep Reading