如何使用 PyCharm 运行 Pylint

我希望将 Pylint 配置为我正在开发的 Python 项目的整个项目目录中的外部工具。我已经尝试将存储库作为模块使用,包括 __init__.py和不包含 __init__.py的模块,但它都不能正常工作。

我很难让 Pylint 和 PyCharm 合作。我知道我应该把它作为一个外部工具来运行,但是这些设置让我感到困惑。

关于他们文档的权威来源已经被破坏了,所以我也无法检查。

103355 次浏览

At first install Pylint with pip:

pip install pylint

You have to open “SettingsToolsExternal Tools“ and press the “+” button at PyCharm.

Here are an example with good settings.

You can set up Pylint to work with PyCharm by following the following steps:

  1. Install pylint:

     $ pip install pylint
    
  2. Locate your pylint installation folder:

     $ which pylint         # MacOS/Linux
    /usr/local/bin/pylint  # This is just a possible output - check yours
    
    
    <!-->
    
    
    $ where pylint         # Windows
    %LocalAppData%\Programs\Python\Python36-32\Scripts\pylint.exe  # Possible location
    
  3. Open the PyCharm settings window with menu FileSettings, then navigate to menu ToolsExternal Tools in the sidebar. (Or search "external tools")

    PyCharm External tools

  4. Set up an external tool by clicking on the + sign and filling in the fields accordingly. In Program use the path you got when running which pylint. For the other values, you can use the same from the image.

    PyCharm Edit Tool

  5. Run pylint from menu ToolsExternal Toolspylint:

    PyCharm External Tools

  6. Look at your output in the PyCharm terminal

    PyCharm terminal

For more details, refer to Pylinting with PyCharm.

If you want to use Pylint to check your whole project or a particular file or directory, you can right click on your project root, file or directory, then activate External Toolspylint as shown below.

PyCharm check entire project

I now use and recommend the PyCharm plugin which didn't exist when I first wrote this answer.**


A colleague pointed me towards pylint-pycharm on GitHub. It's a wrapper around Pylint with output formatted for PyCharm.

Here's how I set it up:

git clone https://github.com/perses76/pylint-pycharm.git
cd pylint-pycharm
python setup.py build

This creates build/scripts-2.7/pylint-pycharm

Then, in PyCharm, create a new External Tool with these settings:

Program: path to your installation of pylint-pycharm
Arguments: --virtualenv=$PyInterpreterDirectory$/.. $FileName$
Working directory: $FileDir$
Output filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

PyLint for PyCharm External Tool settings screenshot

Now run it from menu Tools* → External ToolsPyLintPyCharm. Each line of output will be hyperlinked to the relevant position in the source code.

A note on the previous answers. I was searching for a method to make PyCharm aware of the output syntax so I can directly jump to the file locations. That works without using additional tools.

Pylint can be configured to output messages in a specific format using the msg-template option in the pylintrc file or the CLI option --msg-template.

I set it to: msg-template='{abspath}:{line}:{column}: {msg_id} {msg}'

In the External Tools settings, the Output filters: can be set to $FILE_PATH$:$LINE$:$COLUMN$: .* so PyCharm shows links to directly jump to the reported locations. This can be combined with output-format=colorized so I get this: enter image description here PyCharm does not recognize the column despite having it configured. But having the file and line is enough for me.

Because I didn't find a working ready-made setup, these are the settings I use in PyCharm CE 2018.1 on macOS:

1 - pip install pylint in your project virtualenv or globally

2 - Add new external tool and configure:

Program: pylint
Arguments: "--msg-template='{abspath}:{line:5d},{column:2d}: {msg} ({symbol})'" --output-format=colorized "$FilePath$"
Working directory: $ProjectFileDir$
Output filters: $FILE_PATH$:\s*$LINE$\,\s*$COLUMN$:

Notice the required double quotes for the msg-template, and the escape chars for the output filters. The output filter allows to click on the file path and open the location in the IDE source editor.

Only missing feature would be the output filters to plot the lint descriptions directly into the source view, as is done with the builtin linter. No such feature at this time though.

pylint arguments

You can try this Pylint PyCharm plugin:

Pylint PyCharm screenshot

It provides both real-time and on-demand scanning of Python files with Pylint from within PyCharm/IntelliJ IDEA.

Once you have it installed, the real-time inspection works automatically. For the on-demand you have several options that go from just checking the current open file to scan the entire project:

Enter image description here

(Just for the sake of transparency, I am the developer.)

Thanks to information here, and updated documentation from PyCharm, I've been able to get this to work nicely to also use the virtual environment for the project (ensuring that any packages can be deployed within the virtual environment and do not need to be deployed globally).

Taking what lkraider provided earlier, but with slight modifications:

  1. Ensure you install Pylint within the virtual environment. Note, make sure that when you created the virtual environment you did not select "Inherit global site-packages". If you do then Pylint will end up being globally and this will not work.

  2. Add a new external tool and configure. This is slightly different compared to what lkraider provided. For one I wanted it to look more like normal Pylint output, hence my msg-template (and Output filter) is a bit different. Each to their own. The second change is the more critical one for executing Pylint based on the virtual environment. That is the program parameter where I use $PyInterpreterDirectory$.

    Program: $PyInterpreterDirectory$/pylint
    Arguments: "--msg-template='{abspath}:{line:5d}:{column}: {msg_id}: {msg} ({symbol})'" --output-format=colorized "$FilePath$"
    Working directory: $ProjectFileDir$
    Output filters: $FILE_PATH$:\s*$LINE$\:\s*$COLUMN$:
    

External tool for Pylint

Roberto Leinardi has created a Pylint plugin for PyCharm which really works and integrates well into the IDE:

Easy to install from the repositories, full instructions under:

pylint-pycharm

I have a short, yet a happy, experience with it so far! Kudos to Roberto.