Best 10 Python IDEs in 2019

What is an IDE?

IDE stands for Integrated Development Environment. It is a piece of development software which allows the developer to write, run, and debug the code with relative ease. Even though the ability to write, run and debug the source code is the most fundamental features of an IDE, they are not the only ones. It is safe to say that all IDEs perform the fundamental tasks equally well, however, most modern IDEs come with a plethora of other features specifically tuned to make the workflow easier for a particular type of development pipeline. In this article, we will focus on IDEs that support Python as a programming language.

IDEs are usually developed by a community of people (open source) or by a commercial entity. Each IDE comes with their own strengths and weaknesses. Some IDEs like Jupyter or Spyder are open source and are developed aimed at the Scientific and Artificial Intelligence research community. These IDEs have additional features which make it easy and fast to prototype Machine Learning models and Scientific simulations with great ease. However, they are not well equipped to sustain the development process of an end-to-end application.

Why is IDE an important part of Development?

Traditionally text editors like Nano or Vim (Linux/Unix), Notepad (Windows) and TextEdit (MacOS) were used to write code. However, they are very good at only one single thing, that is to write text. They lack the common functionalities like syntax highlighting, auto indentation, auto code completion, etc.

Next comes the dedicated text editors which were designed to write and edit code for any programming language. These editors like Sublime Text and Microsoft Visual Studio Code are feature rich in terms of the common functionalities like syntax highlighting and auto-indentation. Some even have a Version Control System built in. However, they still lack a significant chunk of functionalities that IDEs have. Their main advantage over IDEs is that they are fast and easy to use.

Finally, coming to IDEs, these are full-fledged development software which contains all the features and tools necessary to aid the complete development pipeline of any software. The main disadvantage of IDEs is that they are comparatively slower and more taxing on the system when compared to text editors.

1. PyCharm

**Category: **IDE

**Website: **https://www.jetbrains.com/pycharm/

PyCharm is a cross-platform Integrated Development Environment specifically developed for Python, by Czech company < rel=“nofollow"a href=”[https://www.jetbrains.com"](https://www.jetbrains.com" “https://www.jetbrains.com”“) rel=“noopener noreferrer” target=”_blank">JetBrains. It primarily has two versions of the software that is available to download - Professional Edition and Community Edition. The Professional Edition has additional features for development, which the Community Edition lacks and is to be purchased.

The Community Edition is released under Apache License and is a free-to-use, open source IDE which is identical to the Professional Edition in most ways, however, it lacks the additional features.

Features: Listed below are some of the features of this IDE

  • **Development Process: PyCharm **Supports the complete development pipeline and its convenience starts to show right from the beginning of the creation of the project, where the developer is given the choice to choose between various interpreters, create a virtual environment or opt for remote development.
  • **Inbuilt VCS: **Like many other modern **IDEs, VCS **is baked right into PyCharm. When inside a project which employs **VCS, PyCharm **automatically generates a graphical interface showing the various branches and the status of the project
  • **Dedicated Database Tools: PyCharm **makes it quite easy to access and modify databases. It allows the developer to access any of the popular SQL databases like MySQL, PostgreSQL, Oracle SQL, etc. right from inside the IDE. It also allows to edit SQL commands, alter schemas, browse data, run SQL queries and analyze schemas with UML diagrams along with support for SQL Syntax Highlighting.
  • Support for IPython Notebooks: As most Data Scientists will swear by, IPython Notebooks are one of the best functionalities that are available in Python. Even though **PyCharm **is not as functional in running IPython Notebooks as the more preferred Jupyter Notebooks are, PyCharm allows the developer to successfully open the IPython Notebook file with proper Syntax Highlighting and Auto-Code Completion and allows the developer to run the notebook as well.
  • **Dedicated Scientific Toolkit: **One of the most commonly used features in this toolkit is SciView. SciView is primarily used for data visualization. It carries forward the functionalities of the well-known Spyder IDE, which comes as a part of Anaconda Installation. SciView allows the developer to easily view plots and graphs built into the editor without having to deal with pop-up windows showing the graphs. Additionally, one of the best features of SciView is the Variable Explorer or Data Explorer, which provides the user with a tabular visualization of the data and its values contained in the variable.

**Pros: **PyCharm offers what most other IDEs don’t, and that is a complete package that allows PyCharm to be used for any kind of end-to-end development or prototyping process across almost all development fields.

**Cons: **PyCharm, being so packed in features, is sluggish and consumes a considerable about of system resources even while idling. This may create problems in low-end systems and prevent the developer from using his/her system’s full potential for the project.

2. Spyder

**Category: **IDE

**Website: **https://www.spyder-ide.org/

Spyder is an open-source Scientific Python Development Environment which comes bundled with Anaconda. Spyder has multiple features that are developed to aid the scientific and data-driven development and hence is an ideal IDE for Data Scientists. It is written in Python itself with the PyQt5 library and hence offers some added functionality which is mentioned below.

Features: Listed below are some of the features of this IDE

  • **Variable Explorer: **Variable explorer is one of the main features of Spyder. This allows the developer to view the contents, datatypes, and values of any variable in the program. This is particularly useful for data scientists since variable explorer allows the developer to view the format and shape of the data. Additionally, it allows the developer to plot histogram and visualize time-series data, edit DataFrames and Numpy arrays, sort a collection and dig into nested objects.
  • **Live Library Docs: **Accessing the documentation repeatedly for a particular class or object of a library via a third party browser can be tiresome. Spyder has an inbuilt HTML viewer which displays the documentation for that particular object or library directly inside the IDE.
  • **IPython Console: **All the lines of codes that are executed by the Spyder IDE, is done so in the IPython console. This console stays open even after the program execution has been concluded and the user can further write extra commands to view, test or modify the existing objects while keeping the changes temporary, ie. outside the main editor.
  • **Debugger: **Debugging is quite an important part of the development process of any software/program. Spyder supports inbuilt debugger via its iPython console, which allows the user to debug each step of the code individually.
  • Plugins:** **Spyder, being open-source, supports third-party plugins which allow the developer to improve his/her development experience. A few of the most used ones are Spyder Notebook, Spyder Terminal, Spyder UnitTest, and Spyder Reports.

**Pros: **Spyders is developed by scientists for scientists. Hence it consists of all the important tools and functionalities that may be required for the development process for any Data Scientist and is ideal for this situation.

**Cons: **Spyder being specifically designed and developed for a certain community of developers (Data Scientists), it lacks most of the end-to-end development tools that are present in other IDEs like PyCharm.

3. Jupyter Notebook

**Category: **IPython Notebook Editor

**Website: **https://jupyter.org/

Jupyter Notebook is one of the most used IPython notebook editors used across the Data Science Industry. It makes the best use of the fact that **Python **is an interpreted language, which means that Python lines of code can be run one line at a time and the whole thing need not be compiled together like C/C++. This makes IPython Notebooks ideal for writing and prototyping Machine Learning models. Since there is a significant amount of preprocessing done initially, and after that, there is a process of repeated hyperparameter tuning and model prototyping, the ability to run a cell (a group of lines) together at a time gives Data Scientists the ability to tune their models easily.

Features: Listed below are some of the features of this IDE

  • **Markdown and LaTeX Support: **Jupyter Notebooks, in addition to being able to write Python code, supports documentation and commenting with text formatting via Markdown Editor. Each cell can be converted to use Markdown or Code. Additionally, Jupyter Notebook, being a scientific tool, also supports LaTeX commands to write down equations at any cell in the notebook.
  • **Dedicated display for DataFrame and Plots: **Since data is the core component of Data Science and Machine Learning, Jupyter Notebook has an inbuilt display for data-tables or pandas DataFrames. Additionally, Data Visualization is an important process of the Exploratory Data Analysis of the Data Science Pipeline. Thus, Jupyter Notebooks has an integrated display for plots and diagrams so that the developer does not have to deal with pop-up plots.
  • **Remote Development Support: **Jupyter Notebook is a server-based application which, when run locally, creates a localhost server backend before opening up via a web browser. But the same can be used for remote development as the Notebook can be run on a remote server which can then be connected to, to run the notebook locally on the web browser, while the processing is done in the server side.
  • Direct Command Prompt or Linux Shell access from inside the notebook: Since the notebook can be used as a remote development tool, the notebook allows the developer to directly access the Linux Shell or Windows Command Prompt directly from the notebook itself without having to open up the shell or command prompt. This is achieved by adding an exclamation mark (“!”) before writing the shell command.
  • **Multi-Language Support: **Jupyter Notebook supports both Python and R. R is also a programming language popularly used by Data Scientists and Statisticians.

**Pros: **The main advantage is the convenience of using it in R&D and in prototyping for Machine Learning and Scientific problems. It significantly reduces the time required for prototyping and tuning of Machine Learning models in comparison to other IDEs.

**Cons: **The main con is that this IDE does not support the entire development pipeline and is ideal just for prototyping. It does not have the additional tools or functionalities that make other IDEs ideal for deployment of programs and scripts.

4. Atom

**Category: **Code Editor

**Website: **https://atom.io/

Atom initially started as an open source, cross-platform, light-weight Node.js based code editor developed by GitHub. It is popularly known as the “Hackable Text Editor for the 21st century” by its developers. Atom is based on Electron, which is a framework which enables cross-platform desktop application using Chromium and Node.js and is written in CoffeeScript and Less.

Features: Listed below are some of the features of this IDE

  • **Plugins: **Atom’s strength is its open-source nature and plugin support. Outside of the usual auto code-completion, syntax highlighting and file browser, it has no such “features’ of its own. However, there are numerous third-party plugins to full up this gap and make it a recommendable IDE. Some of the useful plugins are listed below:
  • git-plus: Git-plus is a feature which allows the developer to use common Git actions without the need to switch terminal.
  • **vim-mode: **This plugin allows developers who are used to vim, to feel right at home. It adds most of vim’s features to be readily available in Atom.
  • merge-conflicts: Since Atom is developed by GitHub, this plugin provides the developers to find, preview and edit code which has merge-conflicts in a similar view to that of GitHub’s own merge-conflict viewer.
  • **Tight Git Integration: **One of the advantages of being an IDE developed by GitHub is that it has very tight integration of Git built into it and it is hence quite easy to run git operations directly from inside the code editor.
  • **Package Installer: **Atom has a user-friendly package installer which allows the developer to install and apply any available package or theme instantly. It does not require any restart of the app post-installation, and hence, avoids the inconvenience.
  • **Project Manager: **Atom has an inbuilt project manager which allows the developer to easily access and manage all his projects in an organized manner.

**Pros: **Being open source and with plugin support, Atom is one of most functional code editors out there. It checks all the boxes for it to be designated as an IDE. Additionally, it is lightweight when compared to other IDEs and is not resource hungry.

**Cons: **Atom, essentially being a code editor, lacks a lot of the integrated tools that developers usually require to carry out a complete end-to-end development pipeline.

5. Enthought Canopy

**Category: **IDE

**Website: **https://www.enthought.com/product/canopy/

Canopy is an IDE developed and maintained by Enthought which is specially designed keeping Scientists and Engineers in mind. It contains integrated tools for iterative data analysis, visualization, and Python application development. It has two specialized versions of Canopy: Canopy Enterprise and Canopy Geoscience. Needless to mention that these products contain a specific set of features which is not present in the vanilla Canopy. In this section, we will concentrate on the vanilla version of Canopy, which is free to use.

Features: Listed below are some of the features of this IDE

  • **Integrated Package Installer: **Canopy provides a self-contained installer which is capable of automatically installing Python and other scientific libraries with minimal effort from the user. It is similar to Anaconda installation.
  • **Scientific Tools: **Like a few of the IDEs mentioned earlier, Canopy has a set of tools specifically tuned and designed for Scientific and Analytical data exploration and visualization. It has special tools for viewing and interaction with plots. In addition to that, it also contains a “variable browser” which allow the user to view the contents of variables in tabular form and their respective datatypes.
  • **Integrated IPython window: **Similar to Spyder, Canopy contains an integrated IPython console which allows the developer to execute code line by line or all at once. This results in easier visualization and debugging.
  • **Integrated Scientific Documentation: **Again, similar to Spyder, Canopy has inbuilt documentation support for scientific articles which allow the user to refer to the documentation for specific libraries directly inside the IDE, without the need to switch to another window and search for the documentation. This, in turn, makes the development process faster.

**Pros: **Since it is specifically designed for Engineers and Scientists, it contains a set of specialized tools which allow the developers from that domain to build prototypes faster and with ease. Being similar to Spyder, it is a good alternative to Spyder IDE for Data Scientists.

**Cons: **Canopy lacks the tools that are essential for deployment, group development, and version control system. This IDE is suitable for prototyping but not the development of deployable code.

6. Microsoft Visual Studio

**Category: **IDE

**Website: **https://visualstudio.microsoft.com/

Microsoft Visual Studio IDE is one of the most preferred IDEs across the development industry. It was initially designed for C/C++ development. However, with increasing popularity and adoption of Python in the industry, Microsoft decided to add support for Python Development via an open-source extension called Python Tools. This brought the best of both worlds together under one integrated environment. Visual Studio’s superior development centric features are second to none. With all the features bundled together, it almost comes neck-to-neck with PyCharm.

Features: Listed below are some of the features of this IDE

  • **IntelliSense: **IntelliSense is an auto-code-completion feature that is baked right into Microsoft Visual Studio’s editor. This allows the IDE to predict and autocomplete code while being typed by the developer with a high level of precision and accuracy.
  • **Built-in Library Manager: **Similar to other IDEs like PyCharm, Visual Studio has a built-in library manager, which allows the developer to easily find and download libraries from PyPI without the need to manually use pip via command line interface.
  • **Debugger: **Microsoft’s offering is one of the best in the industry. It offers a plethora of debugging tools. Starting from basic debugging, like setting breakpoints, handling exceptions, step-wise execution and inspecting values, it goes all the way to Python Debug Interactive Window, which, in addition to supporting standard REPL commands, also supports special meta commands.
  • **Source Control: **Again, similar to PyCharm, Visual Studio has a fully integrated Version Control System. It provides a GUI interface to ease the management of Git/TIF projects. Management of branches, merge conflicts and pending changes can be easily achieved by a specialized tool called Team Explorer.
  • Unit Tests: Visual Studio can be used to set specialized test cases called “Unit Tests”, which allows the developer to test the correct working of the code under various input scenarios. It allows to view, edit, run and debug test cases from the Test Window.

**Pros: **Microsoft Visual Studio is a very successful full-fledged IDE on its own, only became better with the added support for Python Development. Similar to PyCharm, it is one of the most complete and feature packed IDEs out there. Unlike PyCharm, it is quite lightweight in terms of System Resource Utilization.

**Cons: **Machine Learning being one of the primary applications of Python, Microsoft Visual Studio lacks any kind of specialized tools for data exploration and visualization.

7. Sublime Text

**Category: **Code Editor

**Website: **https://www.sublimetext.com/

Similar to Atom, Sublime Text is more of a Code Editor than IDE. However, due to its support for various packages, it packs in enough features to be considered for a full end-to-end development environment. Its support for languages is not limited to any one or two programming languages. It in-turn supports almost all languages that are used across the industry. It has syntax highlighting and auto code completion for almost all languages and hence is quite versatile and flexible. Sublime text has a free trial and post that it is paid. It is a cross-platform Editor, which supports a single license key across all the platforms.

Features: Listed below are some of the features of this IDE

  • **Keyboard Shortcuts: **One of the primary strengths of Sublime Text is its support for keyboard shortcuts for almost all operations. For developers who are familiar with the different shortcut combinations, it becomes quite easy for them to quickly perform certain tasks without having to tinker with the menu.
  • **Command Palette: **This is a special functionality that can be accessed via keyboard shortcut: Ctrl+Shift+P, which pops up a textbox, where the developer can type to access functions like sorting, changing syntax and even changing the indent settings.
  • **Package and API Ecosystem: **Sublime text enjoys a plethora of various package and API support by the community which vastly enhances its functionality. Starting from remote access and development over servers, to packages specifically developed for certain languages; Sublime supports it all.
  • **Added Editing Functionalities: **One of the key features of Sublime that many other editors have been inspired from is its highly customized code editing interface, which allows the developer to have multiple cursors at once and dit more than one location simultaneously.

**Pros: **Sublime Text is the fastest and the lightest Text Editor among the competition and yet is functional enough to be used as an IDE. It provides a unique combination of versatility and functionality, which is truly unique.

**Cons: **Being a text editor, even though it makes up for its lack of built-in functionality via plugins and add-ons, at the end of the day it is still a text editor and lacks a few key features that dedicated IDEs possess.

8. Eclipse + PyDev

**Category: **IDE

**Website: **http://www.pydev.org/

Eclipse is one of the best open-source IDE suites available for Java development. It supports numerous extensions. One such open-source extension is PyDev, which turns Eclipse into a powerful Python IDE.

Features: Listed below are some of the features of this IDE

  • **Django Integration: **For backend developers, this IDE would make development easier and faster by having Django integration baked right into it, along with Syntax Highlighter and Code Auto Completer.
  • **Code Debugging and Analysis: **Eclipse has a good set of code debugging and analysis tools and supports features like refracting, hinting code debugging and code analysis. It also has support for PyLint, which is an open-source code bug and quality checker for python.
  • **Package Support: **Eclipse with PyDev brings a lot of additional features into the IDE. Support for Jython, Cython, Iron Python, MyPy etc. is inherently present in the IDE.

**Pros: **The main advantage of Eclipse is that it is one of the most used IDE in the Java development industry, and hence, any Java developer will feel right at home with this. Additionally, the added package support makes it competitive enough to go head to head with the other available native python IDEs.

**Cons: **Even though there is good package support with additional functionalities that make it unique, the integration of PyDev with Eclipse feels half baked. This is primarily noticeable when the IDE slows down while writing long programs with a lot of packages involved.

9. Wing

**Category: **IDE

**Website: **https://wingware.com/

Wing is a cross-platform Python IDE packed with necessary features and with decent developmental support. It is free for personal use but has a fee associated with it for the pro version, which is targetted towards commercial use. The pro version comes with a 30-day trial for developers to try it out. It even has a specialized version called Wing 101, which is targetted at beginners and is a toned downed version which makes it easier for beginners to start with.

Features: Listed below are some of the features of this IDE

  • **Test-Driven Development: **One of the key features of Wing is its test-driven development and debugging tools. It supports unittest, pytest, doctest, nose, and Django testing framework.
  • **Remote Development: **Similar to PyCharm, Wing supports easy-to-setup remote development which allows the developer to connect to remote servers, containers or VMs and develop remotely with ease.
  • **Powerful Debugger: **It has a debugging toolset which allows the developer to perform easy bug-fixes. Some of the features it provides are conditional breakpoints, recursive debugging, watch value, multi-process, and multi-threaded workload debugging.
  • **Intelligent Editor: **In addition to supporting the mundane syntax highlighting and auto code completion, Wing’s editor supports refactoring, documentation, invocation assistance, multi-selection, code folding, bookmarks, and customizable inline code snippets. Additionally, it can emulate Eclipse, Visual Studio, XCode, Emacs, and Vim.

**Pros: **As apparent from the above-mentioned features, Wing provides quite a complete package in terms of development tools and flexibility. It can be coined as “ideal” for backend web development using Django.

**Cons: **The commercial version can be quite expensive.

10. Rodeo

**Category: **IDE

**Website: **https://rodeo.yhat.com/

Rodeo is a cross-platform, open-source IDE developed by yhat. It is designed and developed targetting Data Science and thus, has a lot of tools required for Data Analysis and Visualization.

Features: Listed below are some of the features of this IDE

  • **Data Visualization: **Similar to other IDEs targeted at Data Scientists, Rodeo also supports specialized data visualization tools and graph visualization.
  • **Variable Explorer: **Again, similar to Spyder, Rodeo allows the user to explore the contents of the variables in the program along with their respective data types. This is an important tool in Data Science.
  • Python Console: Rodeo has a Python console built into the IDE which allows the user to execute and debug code line by line along with block execution.
  • **Documentation Viewer: **Rodeo has a built-in documentation viewer, which allows the developer to consult the official documentation of any library on-the-go.

**Pros: **It is lightweight and fast, and hence is ideal for quick code prototyping for Data Science.

**Cons: **The Development of this IDE has been halted for the past two years. It does not receive any new updates and the project is likely dead. Even though it is a good IDE, it may never receive new updates in the future.

Conclusion

Having listed out the features, pros, and cons of some of the best IDEs available for Python, it is time to conclude which one is the best.

To be honest, there is no clear answer to which IDE is the best since most of them are specifically designed for a given group of developers or scientists. Hence, we will choose the most preferred IDE for each type of use case.

  • General Python/Web Development: This is more like an all-rounder IDE, which can perform any given task with relative ease. In this use case, PyCharm and Microsoft Visual Studio come neck-to-neck in terms of their features and ease of use. However, being natively developed for Python and with added functionality for the Scientific community, PyCharm clearly has an edge over Visual Studio. Hence PyCharm is the most preferred one here.
  • Scientific Development and Prototyping: This use case is mainly targeted at Data Scientists and Machine Learning Engineers who primarily handle data. In this use case, the two most used IDEs are Jupyter Notebooks and Spyder. Spyder is more like an IDE with additional features specifically tailored towards Data Science. Jupyter is an IPython Notebook which cannot be used for development, but us superior in model building and prototyping. Hence, there is no clear winner here, since the usage of the IDE solely depends on the user’s requirements.
  • Code Editors: The final category is simple code editors which perform similarly to full-fledged IDEs due to additional packages and add-ons. Sublime Text is a clear winner in this segment, primarily due to its simple and fast interface along with great community support and a good python development support.

#python #web-development #machine-learning

Best 10 Python IDEs in 2019
2 Likes102.25 GEEK