IntelliJ Platform Plugin SDK Help

PyCharm Plugin Development

Introduction

PyCharm is an IntelliJ Platform-based product. Plugin projects for PyCharm can be developed using IntelliJ IDEA with the gradle-intellij-plugin.

Configuring Plugin Projects Targeting PyCharm

The configuration of PyCharm plugin projects follows the methods described in Configuring Plugin Projects using a Product-Specific Attribute, and Configuring the plugin.xml File. The table below summarizes the gradle-intellij-plugin attributes to set in the build.gradle file. Click on an entry in the table's Attribute column to go to the documentation about that attribute.

gradle-intellij-plugin Attribute

Attribute Value

intellij.type

PY for PyCharm Professional Edition, or PC for PyCharm Community Edition.

intellij.version

Set to the targeted PY or PC version.

intellij.plugins

No specific declaration is needed to use PY or PC APIs.

intellij.downloadSources

false is required because no public source code is available.

runIde.ideDir

Not needed; the Development Instance will automatically match intellij.type.

The dependency on the PyCharm APIs must be declared in the plugin.xml file. As described in Configuring the plugin.xml File, the <depends> tags must declare com.intellij.modules.python.

See the SDK code sample pycharm_basics for an example configuration. Please note that this code sample must be imported into Gradle explicitly, as it is not included in the _gradleCompositeBuild.

Available PyCharm APIs

See Extension Point List for PyCharm Community EPs.

The plugin Python defines the APIs for PyCharm Professional. The plugin Python Community Edition defines the APIs for PyCharm Community. These plugins include the modules openapi and python-psi-api. These are considered stable APIs, but care should be taken to test your plugin with any version of PyCharm you wish to support.

Additional Articles and Resources

Open Source Plugins for PyCharm

When learning new development configurations, it is helpful to have some representative projects for reference:

Last modified: 08 November 2021