What python IDE to chose in 2020? The main purpose of this article is to show comprehensive list best and most popular Python IDEs for programming and education that make learning and coding much easier!
The information is based on personal experience, public web data and several surveys like:
- PyCharm ( Professional and Community edition) - Python integrated development environment specifically designed for the Python language.
- VS Code - Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. If you are working on multi-language web project which needs python then you can give it a try.
- Vim - Vim is a highly configurable text editor with good support for Python
- Sublime - Sublime Text is a sophisticated text editor for code; Many packages can make it fully functional python IDE
- Jupyter Notebook - is a web-based interactive development environment; It's well known in data science community for analyzing, sharing and presenting information
- Atom - multi-platform simplistic source code editor. It makes collaborating on code just as easy as it is to code alone. Many packages and ecosystem can convert the code editor into nice python IDE.
- IDLE - comes with python. IDLE has two main window types, the Shell window and the Editor window. Perfect python tool for people starting with programming and python.
- GNU Emacs - An extensible, customizable, free text editor - and more. It was popular choice for python in the past which lost his glory recent years.
- Eclipse + PyDev - PyDev is a Python IDE for Eclipse. PyDev had huge problems in the past with stability and performance. This pytonic tool is evolving so waiting for good news in future.
- IntelliJ and Python Plugin - Python plugin extends IntelliJ IDEA with the full-scale functionality for Python. Projects which needs Java and Python can be developed with ease in IntelliJ
- Spyder - Spyder is a powerful scientific environment written in Python, for Python, and designed by and for scientists, engineers and data analysts.
- Online Python IDE - repl - Write simple Python code and run it in your browser; includes some basic snippets and examples
|PyCharm Professional||★★★★★||Advanced+||Paid||✔||✘||✔||✔ (limited)||Various/Big|
|PyCharm Community||★★★★★||Beginner, Advanced||Free||✔||✘||✔||✔ (limited)||Various/Big|
|Jupyter Notebook||★★★★||Beginner, Advanced||Free||✔||✔||✘||✔ (limited)||Data-science|
|Eclipse + PyDev||★★★||Advanced/Mid||Free||✔||✘||✔||✔||Various|
|IntelliJ and Python Plugin||★★★★||Advanced||Free (*)||✔||✘||✔||✔||Various|
|Online Python IDE||★★||Beginner||Free||✘||✔||✘||✘||Small scripts|
The popularity of code editors is decreasing with the years but they are far from dead. There are many people who still use "old school" tools like: vim, emacs, plain text editors etc - which write beautiful code and interesting projects. The questions below try to help novice in programming ( or people who want to try something new ) how to choose optimal choice for them.
Important questions which will help you to find the optimal tool for you:
- IDE vs Text/Code Editor - because of plugins and additional tools is hard to draw the line.
- Integrated development environment (IDE) is feature rich tool which provides facilities like debugging, autocomplete, support for environments, project setup, project structure, console etc
- Text/Code Editor - a tool for editing and modifying the code mainly.
Note: With good plugin/package ecosystem the simple source editor might become lightweight but powerful IDE (it's matter of configuration and experience)
What is your level?
- beginner - IDLE (even online python editors) is perfect choice for the first steps in python language. In my opinion PyCharm is good choice for beginners - with some help from more experienced friend.
- mid - PyCharm, Sublime, Atom, Vs Code
- advanced - PyCharm, Vim, Emacs, Sublime, Atom, Vs Code
What do you (plan to)do with python?
- web development - PyCharm Professional, VS Code
- data science - Spyder, Jupyter Notebook, PyCharm Professional
- scripting - Sublime, Atom, PyCharm Community, Eclipse + PyDev
- QA - Sublime, Atom, PyCharm Community, Jupyter Notebook
What is your environment/OS?
- multiple/mixed OS - PyCharm, Sublime, Atom
- Linux, macOS - PyCharm, Sublime, Atom, Vim, Jupyter
- Windows - Sublime, VS Code, Eclipse + PyDev, PyCharm
- Web only - Online Python IDE-s
What hardware do you have?
- bad - IDLE, Atom, Sublime, Online Editor
- good - PyCharm, VS Code, Eclipse + PyDev
- only python - IDLE, Atom, Sublime, PyCharm, Vim
- python + more (Java etc) - IntelliJ, VS code
Note: Most of the answers are based on personal experience and my work with programmers with different background and knowledge. Also there are many other points to be considered as budget, git integration, team work, previous programming knowledge.
Now it's time for (from a python developer with 4+ years in python, and developer with 14+ years in coding) top python IDEs / Code editors with description which I'll use or try in 2020. There is sections with pros/cons, how I'm using the IDE, what projects are used etc.
version - 2019.2.3 (expected version PyCharm 2020.1 in 2020)
It has huge arsenal of features like:
- Highly customizable - some examples:
- Intelligent Assistance for Code
- Powerful debugger - IntelliJ Debug, conditional breakpoints and step back
- The fastest switching between files I've ever seen
- It has nice performance and beauty
- Good support for git and version control
- PyCharm has a very good support for virtualenvs.
- It's maintained and has two versions: paid ( Professional) and free (Community - open source)
- I used the free one - because it's enough for my needs
- There is also one more - Education - for students
- It has multiple windows/views:
- version control
- code structure - working great for code but also for JSON, YAML etc
- run / Debugger window
- project structure
- to do lists
- Script / Configuration editor
- Code / Python specific refactoring
- Project and code navigation
I'm working on many different projects 25+. All of them different in nature, environments, code style and git setup (bitbucket and github), non python files like json, yaml and markdown.
Python projects per size:
- small - several python files plus configuration is the whole project
- medium - several folders with python files and configuration
- big - hundreds of files
- huge - thousands of python files, configurations, integration of different API-s
Projects by type:
- data science - some of the projects are related to data science (beginner to medium level) - time estimation, error detection
- data quality - frameworks responsible for data quality and analysis of data anomalies, finding outliers
- automation - automation of various tasks like data collection, notifications, summary and report generation
- office automation - create office documents, parse hundreds of xls/csv files, create doc files, parse PDF files
I'm using PyCharm on daily basis. Using it for several hours in a row without distraction (it has Distraction Free mode). In general I work with 1 open project at a time. From time to time I can open second or third project or additional file in separate window.
Nice/Python plugins - 1700+ plug-ins available
- Chronomorph - automatic change of dark and light theme based on time
- CSV plugin - nice lightweight table editor for CSV files
- IdeaVim - Vim emulation for PyCharm
- R Language for IntelliJ - perform various statistical computing
- YAML/Ansible support - support for YAML
Most of the plugins come preinstalled with PyCharm so you don't need to do anything more. This is nice advantage for PyCharm. If you want to check plugins installed in PyCharm then you can do:
- Settings - CTRL + ALT + S
- Free version
- It has standard and similar way of working between Idea products - IntelliJ and PyCharm. Considered myself as a Java and Python programmer this is a huge advantage - being able to work in same manner with Java or Python.
- Big community and resources productivity guides - 42 IntelliJ IDEA Tips and Tricks
- It helps to focus on important part (coding) and not on organizing, searching and style setup
- Cross-platform and easy for installation/integration
- It requires high amount of RAM for medium and big projects.
- Some of the features are included only in the paid version - for example support for Notebooks or web projects
- It requires some time to adopt all features and productivity guides
version - 6.0.1 (Releases can be tracked here: jupyter/notebook releases)
Jupyter Notebook become a standard in data science world because it's powerful, easy for working for developers and easy to present at the same time. Many organization and companies use it in their everyday work.
- Jupyter notebooks magics
- Markdown and HTML integration
- Support different kernels - helps working with Languages like Julia, R etc
- Versioning with git
- Visual representation
- Easy automation and integration for Linux
- generating notebooks
- summarizing information
- starting and stoping servers, opening folders and files
- Easy installation and setup
I have several environments with jupyter servers organized by projects and topics. Using it on daily basis for 1 or 2 hours per day. Automated scripts process web data and extract only important results for me - saving me huge amount of time or replacing one person who will need to do it.
I use it primary for data quality, automation QA and trend/error detection. Working with CSV, text and JSON files. Analyzing datasets and store temporary results. Share findings and code snippets.
Here you can find small collection of my notebooks: Jupyter notebooks and datasets for the interesting pandas/python/data science video series.
What is nbextensions:
The nbextensions contains a collection of extensions that add functionality to your Jupyter notebook.
All below can be installed and enabled from: Miscellaneous IPython and Jupyter extensions
- Table of Contents - add table of content (TOC) to your jupyter notebooks - extremely handy for huge notebooks with hundreds cells
- Variable inspector - show information about variables created in the notebook like: name, value, type, size
- Hide Code input - focus on the results while hide the code. This is extremely useful when you need to share the notebook with non it representative which are afraid of seeing source code
- Autopep8 - helps to write code formatted by PEP8 standard. Most of the time working with notebooks we focus on data and results but forget about the code style and format which makes the code hard to read later.
- Markdown support
- Multi language/environment support by Kernels
- Popular standard in Python world
- difficult debugging
- required automation for big projects
- There is a need of organization of folders and files - otherwise very soon it will become nightmare for finding and navigating in such projects
- It needs best practices and time for management
- For example file naming -
- add code/documentation for code cells - I have notebooks with hundreds of cells - it's not very nice to work with them after one or two years
- Avoid duplication and repeated work by using templates
- For example file naming -
- sometimes information can be lost if there isn't good backup solution ( reasons for problems - version incompatibility, broken extension, corrupted file system )
version - 3.2.2 (Sublime Dev Channel Changelog)
Sublime is great text editor which can do much more than that. I'm using it to work it temporary information, interesting articles and texts. For example collecting meeting notes, decisions, to do lists etc.
I'm using it as a
mental separation and not like a technical one. What I mean here is: if I'm on a meeting then I'll open Sublime in Markdown mode and I'll gather meeting notes there. If interesting idea or solution came on my mind - then I'll write down them with Sublime. Later on the same day I'll go through all files in Sublime and do something with them - for example add them to my Lab Diary
All day long I have open Sublime text editor. I'm using it in minimalistic mode - trying to avoid distraction and do what I need to do in the smallest possible number of clicks.
- working with JSON files - reindent - view, edit and reindent JSON files
- Markdown support - collecting meeting notes and TODO lists
- File comparison and regex - searching with regex, edit and replace in small to medium files
- Store temporary notes, links and code snippets
- Small python code snippets and bash scripts
- Anaconda - Anaconda turns your Sublime Text 3 in a full featured Python development IDE including autocompletion, code linting, IDE features, autopep8 formating, McCabe complexity checker Vagrant and Docker support for Sublime Text 3 using Jedi, PyFlakes, pep8, MyPy, PyLint
- Sublime Python IDE - add python completions and refactoring
- Djaneiro - Django snippets and templates, keyword highlighting
- Markdown Preview - Preview and build your markdown files quickly in your web browser
- Pretty good package system
- Highly customizable
- Light with good performance
- Syntax Highlighting (various color themes)
- Block selection and simultaneous editing (multiple selections)
- It's not suitable for huge python projects
- It's had to work in multiproject way
- Needs extra time and knowledge to be converted in Python IDE
Atom is helping me to collaborate with my colleagues by using plugin - Teletype - Collaborate in real time in Atom. From the official page:
Teletype(beta) for Atom lets developers share their workspace with team members and collaborate on code in real time.
It's quite nice feature for beginners and people who want to learn Python faster.
I'm using it 1 or 2 days per week when I need to support colleague of mine or I need help with some tasks. Atom support many different languages so I'm using it not only for Python but also for JSON and YAML files.
Small projects for beginners, JSON and YAML schemas, configurations. I like color themes and code styles of Atom for JSON / Markdown files.
- atom-python-run - Execute python (.py) programs using F5 or F6
Python Black - Uses Black for formatting Python code. It requires - black to be installed -
pip install black
- python-indent Simple and powerful Python PEP8 auto-indentation
- atom-python-test - run py.tests and unitest.TestCase tests
- Python Tools - handy tools to make developing Python code in Atom even more enjoyable
- Python Autocomplete Package - Python packages, variables, methods and functions with their arguments autocompletion
- Package management
- Native git versioning
- Multi-language support with good syntax highlighting
- Open source and free
- Multiple panes and themes
- it has unique way of work which needs some time of learning
- lack of good single tap / project structure way of working. (For example in PyCharm I can work only with 1 open tab at time easily navigating in Project pane and recent files. Which I find hard in Atom)
- needs time for configuration for Python
version - Visual Studio 2019 (expected Visual Studio 2020)
Some people prefer VS code (Visual Studio Code) because it is very well designed for the development and debugging of latest web and cloud projects. For example some people working with Angular and ReactJS use it in their everyday work.
Visual Studio Code is another mature framework which have great community. It has nice editor and offers development features which makes work on web projects almost without any efforts. Maybe the only one IDE from the list which can rival in web development with VS Code is PyCharm Professional Edition.
Features which attract my interest:
- plugins and customization
- nice self-explaining interface and layout
- multi-split window feature
- vertical orientation
Testing Visual Studio Code with new small web projects and see how behaves in comparison to PyCharm. Test project life cycle - starting empty project, installing dependencies and use git integration.
Web related projects, angular plus reactjs. It might be good for people who want to learn python and has experience in other languages and Visual Studio code. Appropriate for web development.
* GitLens - Git blame annotations and code lens
* Python - rich support for the Python language
* Code Linting - linting your python code ( Note: Linting is the process of running a program that analyzes your code for programmatic and stylistic errors )
* Djaneiro - python and django code snippets
* autoDocstring - quickly generate docstrings for python functions
- open Source.
- multi-language support
- good integration with git
- live precompilation on change - if you do a change on your started web project in most cases will be propagated to the started app ( might depends on the OS settings - like number of file to monitor )
- it needs configuration and setup for python
- it's resource demanding
- searching might be slow ( this might depend on the OS, hardware, project size and configuration)
- worse navigation and indexing in comparison to PyCharm ( it need additional configuration for python )
- slower start (also some operations might take more time than expected)
- Some problems with Linux integration ( I faced problems during installation and configuration for some projects in the past )
- Some developers complain that Change log for git is not good enough and use 3rd party software like GitKraken in combination with Visual Code studio.
Version Vim 8.1 is the latest stable version.
Vim is extremely popular in geeks communities and people who has unique style of writing code. There is big lists or plugins, features and versions of Vim.
And one advice from Python's creator - Guido van Rossum
Starting with small projects and tutorial from the web maybe once per month.
Small python and cross-language projects which requires focus and distraction free environment.
- Open Source
- Distraction free
- Very stable
- it's not good for people who don't like to use terminal
- difficult for beginners because it has stipple learning curve
- It can be challenging even for experience programmers - because it has unique way of working which requires focus and concentration
Version - Release 7.4.0 (2019-10-25)
Eclipse was my favorite IDE in the past for many years. I'll give chance to it again and again.
Testing existing projects from PyCharm in Eclipse PyDev.
Small and medium python projects to see what is new in Eclipse PyDev. What I want to ensure is that Eclipse PyDev is stable and with good performance for the most of python project life cycle.
Python features - this is the full table of features for PyDev
- Django integration
- Code completion with auto import
- Remote debugger
- Interactive console
- Unittest integration
- Code coverage
- PyLint integration
- open Source and free
- multi-platform source editor
- designed for python
- multi-language support
- interactive console
- unittest integration
- good syntax high lighting
- very often the plugins are unstable or crashing the IDE. I had huge problems and lost many lines of code because of git problems with Eclipse (which force me to move to IntelliJ few years ago)
- bad performance, unresponsive at times, crashes
- plugins are not working smoothly
latest version is: 26.3
In the past Emacs was the favorite editor for Guido van Rossum(who later - 2017 - said that Emacs is dead - check section for Vim) and many others.
Tweet from Guido in 2016:
In Book: The Art of UNIX Programming is said:
Emacs is undoubtedly the most powerful programmer's editor in existence. It's a big, feature-laden program with a great deal of flexibility and customizability.
I'll give a try to it several times duing 2020.
Small projects and code snippets.
- helps to focus
- during the learning process and configuration for emacs you can learn a lot of your mistakes :)
- installation depends on the platform
- additional package for git integration - magit
- more complex way of debugging
- need additional steps for code formatting, syntax checking etc
- specific customization and configuration for python
- Emacs has a learning curve which require more time in comparison to other source editors.
It's the simplest possible way to run and work with python code on your desktop machine which is included in Python by default.
When I need to teach beginner or person without any experience in Python.
Simple projects like web browser game automations, basic web scraping applications and office automation.
- No need of installation, setup etc. Just code!
- Perfect for verifying small snippets and how python works
- It has some limitation - you can't master python by using only IDLE. Soner or later you will need to try something better
Some companies and organizations prohibit installation of additional software (sometimes you might be able to run portable python from a USB) or even detecting what processes are running. In this cases using web Python code editor is the only available option.
Basic snippets and small programs
- No need of installation, setup etc. Just code!
- Perfect for verifying small snippets and how python works
- Code sharing
- many limitation - working with files, resources etc
- depends on Internet
For me the question has strange answer: There's no best IDE for Python in 2020 but there is a constellation/combination of IDEs and text editors which can make learning, coding and working with python code faster, easier and more reliable.
The closer IDE to the first place is PyCharm - because offers the richest set of features and options. Despite being relatively young IDE - Initial release - February 2010 (about 9 years ago - in comparison to Emacs - with versions since March 20, 1985) - it's well developed and mature environment which can manage big set of projects and assist developer in best possible way. For me :
PyCharm is the most pythonic IDE in 2020!
One advice - Don't search for best/most etc but search for optimal - the tool which can help you do your work with less efforts.
Happy Coding in 2020,