An Integrated Development Environment (IDE) is a tool that helps to develop software applications. Each IDE is focused on some areas and most of them are designed to develop on a specific programming language. It is the tool to create applications easily.
The main features that each developer would seek when choosing an IDE are:
- Ability to edit code.
- Code execution on the same IDE.
- Intuitive and user-friendly UI (User Interface).
- Good support to find documentation of the libraries and frameworks used.
As you may already know, there are as many IDEs as tastes and there are language like Python that doesn’t even require an IDE to develop some application due that just writing a simple module, it can be run and have a small application, but when developing some extra features or big projects, a proper IDE is your best friend.
The main purpose of an IDE should be to help developers to develop faster, more efficient, more confident and in a more efective way.
- 1 IDEs to code Python
- 2 IDE for Python
- 3 General purpose IDE with Python support
- 4 Advance text editors supporting Python
- 5 Conclusions and personal thoughts
- 6 Recommended books to learn Python
IDEs to code Python
Almost any text editor could help to develop a program on almost any programming language but the difference between a text editor and an IDE is that the IDE helps the user with many more features for a specific language than just edit the text like for example:
- Syntax code highlight based on the language.
- Language documentation.
- Execution and compile support.
- Sintax and logic validation.
- Style checkers (for PEP 8 for instance).
- Code Debugging tools.
Depending on the specialization on a language and on Python specific we can make 3 distinctions of IDE groups:
- Python specific IDE.
- Multi-language IDE with Python support.
- Powerful text editors with somehow Python support.
IDE for Python
The main advantage of using a Python specific IDE is that they has been designed and build to have a fully support of the language so it is usally having an exectional set of tools like:
- Specific debugger for Python code.
- Integrated Python interpreter.
- Handling of virtualenvironments and dependencies.
- Python documentation and inspection of modules.
- Many specific checkers like pep8, pep20 or even typed based checker.
- Support of most used libraries like django, flask or Jupyter notebook.
- Runner of applications with expert configurations.
- Many more specific features….
Pycharm is a professional IDE focused on Python development and maybe one of the best valuated and used among the developers along the world. Some of his features can be found next:
- Intuitive and professional code debugger showing the state and values of each variable. This is one of the key features I find on this IDE, it is fantastic.
- Support of multiple test frameworks (unittest, nosetests, pytests and more).
- Native handling of virtual environments and requirements.
- Great support for different Python versions.
- Professional focus on Python code with colored syntax, pep 8 checker, automatic formatter, import optimizations, types checker, python documentation support and much more.
- Multiple version control systems support.
- Ability to get extended via plugins.
- Databases professional support (professional version).
- Professional data analysis support (professional version).
- Magnific web development support, enabling the use of Flask, Django, JS, node and much more (professional version).
The development and maintanence of Pycharm is made by the company JetBrains, the same company specialized on creating IDE for different languajges such Java or PHP.
Due to that the company is specialized on creating IDE, they often share the new features added to other IDE into PyCharm as well, making that the IDE is getting updating by not only the Python developers and users but also from the needs of other programming languages developers.
PyCharm is available in 2 versions, the professional edition (with annual subscription) and the community edition, more limited but super powerful and free. They can be downloaded at: https://www.jetbrains.com/pycharm/.
Check out the PyCharm entry to know more about this fantastic IDE:
Spyder is an open source IDE focused on Scientific and Data Science applications, although it could be used for developing scripts and small applications. The main features it has are:
- It fully support many science related libraries such NumPy, SciPy, Pandas or SymPy.
- Can plot images using matplotlib.
- Supports the usage of IPython and notebooks.
- It comes by default on the Anaconda distribution.
- Has integrated a file manager.
- Allows to debug code showing the status of each variable.
Thonny is a small IDE that allow the development of small programs (usually having only one module) or scripts. It has several great features:
- Syntax coloring for Python code.
- Integrated Python debugger.
- Interactive Python console on the IDE.
- Code analyzer highlighting the errors.
- Python code autocomplete.
This IDE is open source and is been maintained by different organizations such Universidad de Tartu (Estonia), the RaspberryPi project or Cybernetica and can be downloaded at: https://thonny.org/
When installing Python on many operative systems, such windows or MacOS X, it is installed the IDE Python IDLE along with the Python interpreter.
This IDE has several good features, it is a good IDE to start programming in Python but it could be small for developing regular apps:
- Python syntax coloring.
- It is included on the Python installations on Windows and MacOS X.
- Supports a debugger.
- Integrates a Python shell on the IDE.
- Allows to have multiple files opened at the same time.
This IDE is maintained and developed by the core developers of Python and build using tkinter for the user interface, so the code can be found on the build-in library of Python.
El código fuente de este entorno de desarrollo se encuentra presente en la librería estándar y utiliza tkinter para su interfaz gráfica.
Also, there is a project called idlex, which extend the basic functionality of IDLE and can be found at: https://sourceforge.net/projects/idlex/
General purpose IDE with Python support
There are many IDE that are not focused on Python but they allow to develop on this language using extensions or plugins and are a good alternative as well.
Usually they are not as well integrated as an IDE focused on Python but are convenience when the developer is using different languages and want to use the same IDE for all of them.
Visual Studio code for Python
Some of the key features that has this IDE are:
- Proper syntax coloring.
- Ability to execute Python code.
- Jupyter Notebooks integration.
- Python debugger showing the variables status.
- Advanced code autocomplete using IntelliSense.
- Python shell integrated on the IDE.
- Powerful Version Control System.
- Multi-window editor.
- File Manager integrated on the IDE.
- Great integration with Azure Microsoft cloud platform.
Visual Studio can be found at: https://code.visualstudio.com/
PyDev o LiClipse
Eclipse used to be one of the most used and popular IDE around the world, specially because of the usage and integration with Java code. In this case, there is also an integration to use Python on Eclipse called PyDev.
This PyDev integration supports:
- Different interpreters such CPython, Jython or IronPython.
- Django integration for web development.
- Code autocomplete for Python.
- Python colored syntax.
- Test frameworks integration.
- Code debugger.
The easiest way to get PyDev integrated and installed into an Eclipse IDE is installing directly LiClipse and can be found at: https://www.pydev.org/
Advance text editors supporting Python
The main difference between an text editor and IDE is the integrated tools on the application that helps to do many recurrent tasks on an efficient and fast way by default, rather than requiring the developer to find the way to integrate some features like code highlight, code execution, professional debugging system or a version control system.
Atom is an open source project developed by the GitHub team and it is a great editor having many key features. Atom has partial support for Python by default but it has support to many other languages as well:
- Package manager integrated to extend the editor.
- First class Git and version control systems integration.
- Great integration with GitHub.
- Good autocomplete of code by default.
- Ability to use multi-window editor.
It can be found at: https://atom.io/
Sublime Text es un editor de texto, de software libre, multiplataforma con muchas funcionalidades añadidas como las siguientes:
- Visualización de definiciones de código.
- Búsqueda rápida de ficheros.
- Edición de múltiples filas.
- Capacidad de personalización.
- Permite ser extendido via plugins.
- Es rápido y liviano.
- Permite trabajar con múltiples ventanas de edición.
- Tiene soporte de control de versiones.
Se puede descargar en el siguiente enlace: https://www.sublimetext.com/
Vi Improved or Vim, is one of the most famous text editors because of the capabilities of text editing it has supporting macros, different edition modes and much more, as well as been installed by default (Vi) on many Unix based operating systems by default.
The editor is mean to be used on a console but there are also graphical solutions, also, it is not focused on any language although it can be extended using plugins to support Python and other different features such code execution, Python syntax highlight, addition of python documentation, pep8 checkers and much more.
Some features that has by default are:
- Edit and view mode with specific key mapping.
- Macro support to automate editing tasks.
- Great repository of plugins available and support to create your own plugins and extensions.
- Powerful vertical editing.
- Ability to get extended and customize as personal as each developer wants.
The key point of using Vim is the ability to customize the editor to the developer preferences, been able to automate even operative system tasks with a key command sequence or been able to replicate the editor configuration using the same config file into different environments.
The highly available customization and the different editing modes, makes that the first steps of Vim usage are hard for novice developers, requires some time to get use to it and most of the users are experience developers that want a custom editor that cover their needs.
It is included in many operating systems by default but it can be found at: https://www.vim.org/download.php
Emacs is another advance text editor similar to Vim but in this case with an easier first steps due to the more natural key mapping used and the default editorial modes. It is written in Lisp and integrates lisp on his system.
There used to be a big competition between Vim and Emacs users on how to create the “best IDE” but due that is a subjective matter that only each developer would like more one or the other based on their own preferences it was a vague war most of the time.
Emacs is highly customizable and it can be extended to use Python complements that allow the edition of Python code along with other features and can be found at: https://www.gnu.org/software/emacs/
Conclusions and personal thoughts
There is a great variety of IDE and even great advance text editors that will help any developer to find the right tool for developing Python.
In my opinion, each developer should find the tool where he/she is more comfortable with because we spend many code hours that potentially could be simplified if we find the right tool for use and also allow us to enjoy the journey of coding.
For years I used to use Vim but at some point I discovered PyCharm professional and I couldn’t come back, it has many key features that any developer (or specifically web developer) would like and need such version control system, integrated python shell and the key point of the great debugger.
I would recommend to each developer to test each IDE and find the one that fits better his/her needs, and when you find it comment it down below 😀 and have fun coding!
Recommended books to learn Python
This is a list of recommended books to learn Python, how to program, data types, algorithms and much more.