PyCharm is an Integrated Development Environment (IDE) specialized to develop Python applications. It is maintained and developed by JetBrains S.R.O along with the other IDEs they maintain for different programming languages such:
- IntelliJ IDEA (Java).
- PyCharm (Python).
- PhpStorm (PHP).
- ReSharper (.NET).
- CLion (C & C++).
- RubyMine (Ruby).
- AppCode (iOS/macOS apps).
- GoLang (Go).
This company is also developing other tools related with the software development that can be found here.
The IDE has three different versions:
- Professional: this version is the complete one with multiple features only included and focused to make the developing of Python applications a pleasure.
- Community Edition (CE): this version is open source and free, it is focused for developers that want to have a proper Python environments but doesn’t require the extra functionalities that the professional version provides.
- EDU: is an edition based on the community but with some features to help teachers and students to go in deep on the learning of the language having some extra features for rookies in Python.
- 1 Download PyCharm CE free
- 2 Download PyCharm EDU
- 3 Prices of PyCharm Professional
- 4 Download PyCharm professional Free
- 5 5 + 1 features of PyCharm CE
- 6 3 Key features to use the PyCharm Professional version
- 7 Recommended books to learn Python
Download PyCharm CE free
The community edition can be downloaded from the main repository here.
Download PyCharm EDU
The educational version of the IDE can be found here.
Prices of PyCharm Professional
The professional version can be downloaded and used for a trial period. After the trial there are different prices available (some of them even free):
- 89$/yearly for individual use: after the first year the price is decreasing until reach 53$ per year at the third year.
- 199$/yearly for organizations: this prices is per license and the licenses can be used by only one developer but can be shared across different developers while it is not been used. After the third year it is also the prices drops to 119$ yearly per license.
- 25% discount: old students or users using competitors to this IDE tools when switching to JetBrains.
- 50% discount: universities, educative organizations, start-ups or non-governmental organization.
Download PyCharm professional Free
If you use the IDE for teaching, as a student or on open source protects you can be legitimate to get a license of the IDE on the Professional version for free, check it out on the official web site.
5 + 1 features of PyCharm CE
Here are 6 different features that makes the IDE on the Community Edition so special.
Professional Version Control System
There is support for the mayor version control systems available to develop software such Subversion (SVN), Git, Mercurial and has a great integration with git platforms such GitHub, along these other features:
- Advanced view of the git log: it can be selected the users, commits, branches and many other filters to find any lost commit.
- Support for local and remote branches: it allows to see the differences and manage branches on a professional way.
- Powerful tools to check differences between branches: it can spot the differences on many files between branches and even apply patches only to some of them with a couple of clicks.
- Multiple workspace: it can be using git stashes but also allows you to create workspaces with changes that are isolated from the usual changes you are working on.
- Git integration on the code: it allows to see the git blame (history of each change) by line but also to check partial sections of the code between different git branches and checking the history of each part in seconds.
Python virtual environments
The virtual environments in Python is a very powerful tool that allow to have isolated Python environments for each project, allowing the developer to have different Python and libraries versions on each project not interfering one to each other.
This IDE support the virtual environments in a professional way having:
- Creation and handling of venvs: by default it tries to create a virtual environment per project with the default python interpreter on the system.
- Shared venvs: used when the user prefers to have a the same virtual environment for several projects sharing the same preferences.
- Different python versioning: it not only supports different libraries but also different Python version interpreter.
- Requirements updates: it can detect the requirements places at requirements.txt file and in case they are different with the virtual environments will prompt a message to update them automatically.
- Package manager: also it provides a complete package manager for git to install, update or remove dependencies.
Professional running and debugging of Python code
- Custom execution of projects: it allows you to select all the variables per execution such virtual environment, system variables or even custom configurations or working directories.
- Professional debugging: one of the key points of this environment is the professional debugging system that come with the community and professional version, that allows to see each variable status and speed up the development process a lot.
- Support of different tests frameworks: it has a great support to many different test suites such a py.test, unittests or nosetests.
- Context inspection: when running the applications and adding breakpoints you can inspect each context of the execution of a function going deep and out of the function and have the variables on each level, very useful.
Advance editing tools
- Code autocomplete: as it is a Python focused IDE it can autocomplete methods, functions and even hint for importing the missing variables detected.
- Advance handling of imports: it can detect errors at importing libraries or missing variables, and even sort the imports removing the unused ones and making the import pep8 compliance.
- Source code inspection: it helps developers to check the source code of any library, custom, from a third party or even on from the build-in showing the documentation on an easy way.
- Professional types checks: it can hint the types or even detect potential issues when calling missing methods or functions on certain objects types.
- Vertical editing and multi tabs/windows edition: it allows to edit in a vertical way to append some extra characters or remove a column on the code. Also it allows to have multiple windows and have tabs and split windows to check different parts of the same module or different modules.
- Duplicated code detection: this is a feature only included on the professional version but it can detects duplicated code on the same module and hint how to fix the potential issue of have duplicated code.
Format and code refactor
- Code format: it has all the pep8 rules and helps to apply the rules with simple commands like Ctrl+L which will format the entire module opened but also it can be used to be done on each commit to the entire project.
- Refactoring of a project: many times we want to move some function, class or method from some module to another. It has some features that not only do the move, but also check for all the usages on the project and update the imports accordingly.
- Imports sorting: following the pep 8, the import must be done in order from more generic to more specific packages. This ide sort and remove the unused import libraries with a simple command.
Integrated command lines and terminals
There are many more features that can be highlighted but one that is very important is that it allows to have multiple command lines and terminals on the same window.
In this way we can have a system terminal to run some commands at system level but also to have several python interpreters opened, using the virtual environment of the project and able to send the code into some file.
3 Key features to use the PyCharm Professional version
Database tools (DataGrip)
The integration for databases is a big plus and maybe a key point to jump into the professional version of the IDE because of the next features:
- Support of many databases: it has a great support for many different databases such MySQL, PostgreSQL, Microsoft SQL Server, SQLite, MariaDB, Oracle, Apache Cassandra and many more. It allows to run the queries directly and have a SQL workspace inspecting the database content.
- Inspection of a database: it allows to see the different schemas and tables within a database, view the content of each table and even modify like if it would be using a proper database dedicated manager.
- UML diagrams: it can auto-discover the tables and relations between the models of any database and create the UML diagrams.
- Import and export content: it allows to query and export the results into different formats, and even configure the formats from CSV, TSV to Jira tables for instance and also import information into the databases.
Professional web development
This is another key points for web developers. The support for developing web applications is quite extensive and great with some of the key features been:
- Support of many web frameworks: has native support for Flask and Django but also helps with the deploys and integrates many languages.
- Templates debugging: this is maybe an awesome feature that can be impressive. You can debug on jinja templates to check for variables and even to have breakpoints on exceptions of the templates.
- WebStorm integration: the great tools added on WeStorm are also integrated on this IDE.
- Docker and docker compose support: it provides support to use dockers in an easy way.
- Run of remotes environments: it can be connected to a remote environment and run the code from that specific machine. The files on your local machine will be synced on every change with the remote host and run on the remote host which is quite convenient on situations when you have a host near some database and your local machine is not having a great connection or you are using a VPN connection.
Also on the Data Science field it has some key features:
- Good integration with Jupyter notebooks: it can be running some jupyter notebooks although some times it is buggy and lead to some problems.
- Integration with Conda: conda is a package manager and this IDE can be integrated with it.
- Data Science tools: frameworks like pandas and matplotlib can be easily used on the data science mode. It allows the developer to insepect the content on the dataframes but also to see the charts created with matplolib.
Recommended books to learn Python
This is a list of recommended books to learn Python, how to program, data types, algorithms and much more.