Text Editors and IDEs

Text editors and integrated development environments (IDEs) are applications for writing code. These applications are the primary user interface for developers to create their own programs.

Vim with basic configuration options on a dark background.

Vim is an example of a text editor implementation that can be expanded into a full Python IDE using configuration files and plugins.

Text editors and IDEs are a concept implemented by Vim, Emacs, Sublime Text, Jupyter Notebook and several other applications. Learn how the parts fit together in the development environments chapter or view all topics.

Why is a text editor or IDE necessary?

Where will you write your code if you do not have a text editor? Your development environment must include a text editor so you can enter, edit and delete characters to create Python applications.

Preferrably your editor will have a monospace font. It will also get out of your way, so no "smart" correction or automatic letter capitalization. The more comfortable you become in your editor of choice the faster you can figure out how to implement that next feature in your application or squash that pesky bug that you just found.

What's the difference between editors and IDEs?

IDEs contain text editors but many text editors, for example Notepad included with Windows, do not include IDE features. Many text editors such as Vim or Emacs have IDE features by default but then can be further customized to add file trees, syntax highlighting, line numbers and syntax checking that is commonly found in full-featured IDEs.

Open source text editors

Open source provides an embarrassment of riches when its come to stable, extendable text editors. Some version of these editors, such as the original vi version of Vim, have been used for over 40 years! You can't go wrong with using one of the editors as your development environment foundation.

The following text editor implementations can be upgraded with configurations and plugins to become full-fledged IDEs when a developer wants that kind of functionality.

Python-specific IDEs

Editors built from the foundation up are not necessarily better than general-purpose text editors and IDEs like Vim and Emacs but they are typically much easier to configure for gathering code metrics, running unit tests and debugging.

  • PyCharm is a Python-specific IDE built on JetBrains' platform. There are free editions for students and open source projects.

  • Thonny is an open source Python IDE for new programmers. The tool bakes in syntax highlighting, code completion, a simple debugger, a beginner-friendly shell and in situ documentation to assist new developers who are just starting to code.

  • Wing IDE is a paid development environment with integrated debugging and code completion.

  • PyDev is a Python IDE plug in for Eclipse.

Proprietary (closed source) editors

There are some editors that are closed source that developers are very happy using.

  • Sublime Text versions 2 and 3 (currently in beta) are popular text editors that can be extended with code completion, linting, syntax highlighting and other features using plugins. If you are considering using Sublime Text for Python development, check out this 2016 in review - likes and dislikes about Sublime Text post that summarizes many of the positives and negatives of using the editor.

  • Komodo is a cross-platform text editor and IDE for major languages including Python, Ruby, JavaScript, Go and more.

Building your own text editor

One great way to learn more about how text editors work is by building your own, even if it turns out to be a hacked-together proof-of-concept. These resources give walkthroughs on building an editor, or explain how existing editors work by digging into their source code.

General text editor & IDE resources

These resources provide comparisons of various editors and give some deeper insight into the IDE vs plain text editor debate.

What do you want to develop with your IDE?

I want to know about working with data in Python.

I want to learn how to code a Python web application using a framework.

I've built a Python web app, now how do I deploy it?

Matt Makai 2012-2022