A text editor is all very well for simple notes, but for programming the basic text editor will quickly become very tedious. For example, Python uses code indentation to indicate ‘blocks’, using tabs or spaces (4 spaces recommended for each level of indentation). It will help a lot if the editor you use ‘knows’ Python! It will help not only with indentation but also guide you in your programming. They range from lightweight editors to sophisticated Interactive (or Integrated) Development Environments (IDEs). At this stage you’ll find a fully-featured IDE confusing, they have lots of buttons and tabs and panes. Like the cockpit of a Space Shuttle rather than the dashboard of a car!
The boundary between editor and IDE is very indistinct and I’m not going to try to be formal about it other than saying that the more of these features it has, the more it qualifies as an IDE:
I spent a considerable amount of time researching Python editors & IDEs. I had to eliminate many based on how difficult it was to get them to use Python 3 instead of 2, and how complex or cumbersome they might be for people who aren’t computer professionals, such as students & teachers. The following, in my opinion, are all suitable for the classroom or beginning programmers of any age. Try them all if you can, and do please let me know in the comments how you got on, or if you know any others I should consider including. They are all free, except Sublime Text, which has an infinitely long ‘evaluation period’. All of them welcome contributions!
IDLE is the Python IDE built with the tkinter GUI toolkit. IDLE has the following features:
Geany is a text editor using the GTK2 toolkit with basic features of an integrated development environment. It was developed to provide a small and fast IDE, which has only a few dependencies from other packages. It supports many filetypes and has some nice features.
gedit is the GNOME text editor. While aiming at simplicity and ease of use, gedit is a powerful general purpose text editor. Features:
NINJA-IDE (from the recursive acronym: “Ninja-IDE Is Not Just Another IDE”), is a cross-platform integrated development environment (IDE). NINJA-IDE runs on Linux/X11, Mac OS X and Windows desktop operating systems, and allows developers to create applications for several purposes using all the tools and utilities of NINJA-IDE, making the task of writing software easier and more enjoyable.
Spyder is an open source cross-platform IDE for scientific programming in the Python language. Spyder integrates NumPy, SciPy, Matplotlib and IPython, as well as other open source software. In comparison with other IDEs for scientific development Spyder has a unique set of features – cross-platform, open-source, written in Python and available under non-copyleft license. My personal choice.
Sublime Text is a cross-platform text and source code editor with a Python application programming interface (API). It natively supports many programming languages and markup languages, and its functionality can be extended by users with plugins, typically community-built and maintained under free-software licenses. Sublime Text is proprietary software.
PyCharm used to be my IDE of choice, but I found start-up too slow, and being project-based it creates extra files, and has lots of features (and thus tabs & buttons & panes) I didn’t want. But it’s a very strong favourite among professional developers, with good reason. Check it out after all the above!
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger. Most modern IDEs have intelligent code completion. Some IDEs, such as NetBeans and Eclipse, contain a compiler, interpreter, or both; others, such as SharpDevelop and Lazarus, do not. The boundary between an integrated development environment and other parts of the broader software development environment is not well-defined. Sometimes a version control system, or various tools to simplify the construction of a Graphical User Interface (GUI), are integrated. Many modern IDEs also have a class browser, an object browser, and a class hierarchy diagram, for use in object-oriented software development.