Built-in Developer Tools

PyCharm’s huge collection of tools available out of the box includes an integrated debugger and test runner; a Python profiler; a built-in terminal; integration with major VCS and built-in database tools; remote development capabilities with remote interpreters; an integrated ssh terminal; and integration with Docker and Vagrant.

Visual Debugger

PyCharm provides extensive options for debugging your Python/Django and JavaScript code:

  • Set breakpoints right inside the editor and define hit conditions
  • Inspect context-relevant local variables and user-defined watches, including arrays and complex objects, and edit values on the fly
  • Set up remote debugging using remote interpreters
  • Evaluate an expression in runtime and collect run-time type statistics for better autocompletion and code inspections
  • Attach to a running process
  • Debug Django templates

Inline Debugger

With an inline debugger, all live debugging data are shown directly in the editor, with variable values integrated into the editor's look-and-feel. Variable values can be viewed in the source code, right next to their usages.

Step into My Code

Use Step into My Code to stay focused on your code: the debugger will only step through your code bypassing any library sources.

Multi-process debugging

PyCharm can debug applications that spawn multiple Python processes, such as Django applications that don't run in --no-reload mode, or applications using many other Web frameworks that use a similar approach to code auto-reloading.

Run/Debug configurations

Every script/test or debugger execution creates a special 'Run/Debug Configuration' that can be edited and used later. Run/Debug Configurations can be shared with project settings for use by the whole team.

Run Your Code

Run in Any Python Environment

You can run any Python file. Just right-click what you need to run and select 'Run <your script>'.

PyCharm allows easily configure the required Python environment for your project, be it local, remote interpreter or a virtualenv.

Interactive Console

You can run interactive Python or Django consoles in PyCharm which offer many advantages over the standard ones: on-the-fly syntax check with inspections, automatic matching of braces, parentheses and quotes, and of course code completion. Both consoles work with local and remote interpreters.

Built-in Terminal

This is what makes PyCharm a complete Python IDE. No need to leave the IDE as you develop. Local terminal is available for Windows, Linux and Mac OS.

Full Python Support

PyCharm supports all major Python implementations including Python 2.x and 3.x, Jython, IronPython, PyPy and Cython, offering:

  • Syntax highlighting, error checking and code formatting
  • Context-sensitive code completion
  • Code navigation and Structure view
  • Quick Usages Search and refactoring tools
  • Code inspections and much more

Unit Testing

Perform unit testing with ease, as PyCharm integrates with popular Python testing frameworks: doctests, nose, and attest.

PyCharm lets you run your tests: a test file, a single test class, a method, or all tests in a folder. You can observe results in the graphical test runner with execution statistics and easy test-code navigation.

Code Coverage

PyCharm integrates with Coverage.py, a standard tool for measuring code coverage of Python programs. It monitors your program, noting which parts of the code have been executed, and then analyzes the source to identify code that could have been executed but was not. You get the results in a nice visual format for later analysis and easy code navigation.

Python Profiler

Take full control of your code with the Python Profiler Integration, supporting yappi and cProfile. Discover captured snapshots and detailed statistics with the colored function call graph. Observe an aggregated report and jump from the execution statistics directly to the function in your Python code.

BDD for Python

BDD is now possible in Python with Behave and Lettuce. Write human-readable stories that describe the behavior of your application. Enjoy support from PyCharm including installation and configuration helpers, run configuration and BDD frameworks’ Intellisense.

Thread Concurrency Visualization

Thread Concurrency Visualization helps you take full control over your multi-threaded applications. You can run your python application in the Concurrency Diagram mode using special button to inspect the real time states of threads inside your running process on a diagram.

Version control systems

Unified support for Git, SVN, Mercurial, Perforce and other version control systems helps you manage local changes and apply complex branch operations. All the tedious tasks (adding, removing and deleting files) are performed automatically.

The following features are available no matter which VCS you use:

  • Integrated changelists — group your changes into multiple change lists for better organization
  • Shelved changes — set aside some changes to restore them later
  • Repository changes view — see what has been committed by other team members
  • Incoming changes view — see the code changes not yet integrated into your local copy
  • Outdated changes notification — get warned that a file you are working with has been changed after your last sync

Local history

PyCharm tracks any changes made to your source files, protecting you from any accidental losses or modifications, even if made by other applications. At any time, you can inspect the history of either a particular file or directory, and roll back to any of its previous versions.

Built-in Visual Merge Tool

A built-in visual merge tool resolves all conflicts in a quick and intuitive manner. The changes made locally are highlighted as you type in the editor gutter, providing intuitive navigation and 2-click rollback for individual changes.

Diff Viewer

You can easily track changes and view differences between two files, or compare two versions of a file (local changes or changes between local files and their revisions in a remote repository) using the integrated graphical Diff Viewer.

Database tools

Access and Modify databases

Access Oracle, SQL Server, PostgreSQL, MySQL and other databases right from the IDE. PyCharm helps you edit SQL code, browse data, and alter schemas as well as table data, run queries, and even analyze schema with UML diagrams.

SQL injection

SQL code can be injected to other languages or edited in SQL Editor with syntax highlighting, smart code completion, on-the-fly code analysis, code formatting and navigation.

SQLAlchemy support

PyCharm provides smart code insight for the SQLAlchemy library, resulting in intelligent code suggestions and automatic completion. SQLAlchemy diagrams complement the support of this handy SQL toolkit by visualizing your data structure.


PyCharm Professional Edition incorporates the latest capabilities of DataGrip to help you work with databases. Learn more about DataGrip features

Remote development capabilities

SSH Remote Tools

The Built-in SSH Console let you connect to any remote machine and perform various actions via SSH. In addition, SSH Remote Tools can be configured to run any remote tool right from the IDE with a single keystroke.

Remote Interpreter

Using a remote Python interpreter instead of a local one lets you run, debug and profile your application on a production-like or testing environment, be it the real server or a virtualized one created with Vagrant or Docker.

Vagrant

Vagrant is a handy tool natively integrated in PyCharm designed to help you create reproducible development environments. It allows you to share a development virtual machine by sharing a simple script. Other developers can then launch an identical machine by running the Vagrant up command.

Docker

PyCharm integrates Docker, a popular open platform for distributed applications for developers and system administrators. Specify a Python interpreter from a Docker container and use it in your project for running, debugging and profiling your applications.

Issue Tracker Integration

When your ToDo list is in an issue tracking system, you can configure PyCharm to work with the issues without switching from the IDE. Just specify your issue tracker server and:

  • Select tasks to work on from the list defined by your filter
  • Automatically group VCS changes under a corresponding task
  • Commit to VCS with task name/ID pre-filled for you
  • Switch between tasks keeping IDE context saved (open editor tabs, breakpoints, etc.)

PyCharm supports the following bug tracking systems: Atlassian JIRA, JetBrains YouTrack, Lighthouse, Pivotal Tracker, GitHub, Redmine, and Trac.