【问题标题】:How to run Pylint with PyCharm如何使用 PyCharm 运行 Pylint
【发布时间】:2020-07-22 13:52:45
【问题描述】:

我想在我正在处理的 Python 项目的整个项目目录中将 Pylint 配置为外部工具。我尝试将存储库用作带有 __init__.py 和不带的模块,但无论哪种方式都无法正常工作。

我在设置 Pylint 以使用 PyCharm 运行时遇到了困难。我知道我应该将它作为外部工具运行,但是设置让我感到困惑。

他们文档的权威来源已损坏,所以我也无法检查。

【问题讨论】:

    标签: python python-3.x pycharm pylint


    【解决方案1】:

    您可以按照以下步骤设置 Pylint 以使用 PyCharm:

    1. 安装pylint:

       $ pip install pylint
      
    2. 找到您的pylint 安装文件夹:

       $ 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. 使用菜单 FileSettings 打开 PyCharm 设置窗口,然后导航到菜单 ToolsExternal Tools在边栏中。 (或搜索“外部工具”)

    4. 通过单击+ 符号并相应地填写字段来设置外部工具。在Program 中使用你在运行which pylint 时获得的路径。对于其他值,您可以使用图像中的相同值。

    5. 从菜单运行pylint 工具外部工具pylint

    6. 在 PyCharm 终端中查看您的输出

    更多详情,请参考Pylinting with PyCharm

    如果您想使用 Pylint 来检查您的整个项目或特定文件或目录,您可以右键单击您的项目根、文件或目录,然后激活 External Toolspylint 如下图。

    【讨论】:

    • @stevenVascellaro,您可以查看此link。或者你可以找到pylint 在你的机器上的安装位置。
    • 虽然此答案有效,但它只是将结果写入文本字段。现在有一个 PyCharm 插件可以完成所有这些工作,还可以连接到 IDE 并突出显示可疑行。它可以从默认存储库中下载。有关详细信息,请参阅其他答案之一。
    • 我完成了您描述的每一步,但收到警告消息:未找到配置文件,使用默认配置。然后我创建了一个资源文件,如答案:stackoverflow.com/questions/5253559/…。现在 pylint 运行良好。
    • 这就像一个魅力;只有一个问题 - 我们可以通过这种方法获得每个文件的 pylint 分数吗?有点像报告
    • @lmiguelvargasf:这里的程序、参数和工作目录是什么?目前,我正在执行为“python test.py --var1=xyz”。如何相应地配置程序、参数和工作目录?
    【解决方案2】:

    因为我没有找到可用的现成设置,所以这些是我在 macOS 上的 PyCharm CE 2018.1 中使用的设置:

    1 - pip install pylint 在您的项目 virtualenv 或全局中

    2 - 添加新的外部工具并配置:

    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$:
    

    注意消息模板所需的双引号,以及输出过滤器的转义字符。输出过滤器允许单击文件路径并在 IDE 源代码编辑器中打开该位置。

    唯一缺少的功能是输出过滤器将 lint 描述直接绘制到源视图中,就像内置 linter 所做的那样。不过目前没有这样的功能。

    【讨论】:

    • 这些设置也适用于 Windows,以防有人想知道。
    【解决方案3】:

    你可以试试这个Pylint PyCharm plugin:

    它使用 PyCharm/IntelliJ IDEA 中的 Pylint 提供 Python 文件的实时和按需扫描。

    安装后,实时检查会自动运行。 对于按需,您有几个选项,从仅检查当前打开的文件到扫描整个项目:

    (为了透明起见,我是开发者。)

    【讨论】:

    • 这看起来不错。不幸的是,它在启动时抛出了异常——它不喜欢安装在 /usr/bin 中的 pylint 版本,并且没有使用项目 virtualenv 中的 pylint。我会继续检查更新,因为您的插件看起来会是理想的解决方案:-)
    • 嗨,如果您还没有这样做,请打开一个问题here 并附上idea.log 文件。
    • 我快速浏览了一下,它似乎与#29 重复。我会将日志中的相关行添加到该问题中。
    • @AaronF 您需要手动将 pylint 的路径设置为安装在 virtualenv 上的路径。例如:projectvenv/bin/pylint 而不是 /usr/bin/pylint
    • 目前这个插件有一些问题,见github.com/leinardi/pylint-pycharm/issues/76
    【解决方案4】:

    我现在使用并推荐PyCharm plugin,当我第一次写这个答案时它并不存在。**


    一位同事将我指向 GitHub 上的pylint-pycharm。它是 Pylint 的包装器,输出格式为 PyCharm。

    我是这样设置的:

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

    这会创建build/scripts-2.7/pylint-pycharm

    然后,在 PyCharm 中,使用以下设置创建一个新的外部工具

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

    现在从菜单 Tools* → External ToolsPyLintPyCharm 运行它。每行输出都会超链接到源代码中的相关位置。

    【讨论】:

      【解决方案5】:

      关于先前答案的注释。 我正在寻找一种让 PyC​​harm 了解输出语法的方法,以便我可以直接跳转到文件位置。无需使用其他工具即可使用。

      可以使用 pylintrc 文件中的 msg-template 选项或 CLI 选项 --msg-template 将 Pylint 配置为以特定格式输出消息。

      我将其设置为: msg-template='{abspath}:{line}:{column}: {msg_id} {msg}'

      在外部工具设置中,Output filters: 可以设置为 $FILE_PATH$:$LINE$:$COLUMN$: .* 因此 PyCharm 显示链接以直接跳转到报告的位置。 这可以与output-format=colorized 结合使用,所以我得到了这个: 尽管已配置,PyCharm 仍无法识别该列。但是有文件和线路对我来说就足够了。

      【讨论】:

      • 查看我关于正确输出过滤器以检测列的答案:stackoverflow.com/a/50298934/324731
      • @lkraider 我没有看到相关的区别。你用我试过的逗号分隔行和列 - 它没有用。然后你正在逃避不必要的冒号。我为msg-templateOutput filters 尝试了您的完整解决方案,但未检测到该列。也许还有其他问题,您能查明问题吗?我正在使用 PyCharm 2018.1.2。
      • 您如何测试检测?我的不像你的那样在行号下划线(也不是列),但点击链接会将插入符号移动到正确的位置。
      • 我发现了问题,确实如果行号带有下划线,链接将不起作用。在我的示例中,当行 > 99 时会发生这种情况。当有空格分隔时,链接会正确地将插入符号放置在列位置。
      • 这曾经对我有用....现在我得到“Windows 找不到 'file:///C:\Use...”。
      【解决方案6】:

      首先使用 pip 安装 Pylint:

      pip install pylint
      

      您必须打开“设置工具外部工具”,然后在 PyCharm 上按“+”按钮。

      这里是an example,设置良好。

      【讨论】:

      • 我按照示例进行操作,但运行时出错。 无法运行程序“pylint”(在目录“/Users/RodChen/my_project”中):错误=2,没有这样的文件或目录。我确定该目录存在,因为我使用 $FileDir$ 作为工作目录。我该如何解决?谢谢。
      • 我猜你用的是windows。 pylint 在码头工作吗?
      • 我使用 Mac。我只在我正在工作的虚拟环境中安装了 pylint,而 pylint 在普通终端上不起作用。我在系统中安装 pylint 后,pylint 在 PyCharm 中工作了!谢谢!
      • @RodChen 我在虚拟环境中也安装了pylint。我已将 PyCharm 指向我的虚拟环境的 python 解释器,它似乎工作正常。不过,我对pylint 还是很陌生,所以也许您指的是一些我不知道的特定功能。
      【解决方案7】:

      Roberto Leinardi 为 PyCharm 创建了一个 Pylint 插件,它确实可以很好地集成到 IDE 中:

      易于从存储库安装,完整说明如下:

      pylint-pycharm

      到目前为止,我有一个短暂但快乐的体验!向罗伯托致敬。

      【讨论】:

        【解决方案8】:

        感谢这里的信息和 PyCharm 更新的文档,我已经能够很好地工作,也可以使用项目的虚拟环境(确保任何包都可以部署在虚拟环境中并且不需要全球部署)。

        采用lkraider provided earlier,但稍作修改:

        1. 确保在虚拟环境中安装 Pylint。注意,确保在创建虚拟环境时没有选择“继承全局站点包”。如果你这样做了,那么 Pylint 将最终成为全球性的,这将不起作用。

        2. 添加新的外部工具并进行配置。与 lkraider 提供的相比,这略有不同。一方面,我希望它看起来更像正常的 Pylint 输出,因此我的 msg 模板(和输出过滤器)有点不同。各有各的。 第二个变化对于基于虚拟环境执行 Pylint 来说更为关键。那是我使用 $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

        【讨论】:

          猜你喜欢
          • 2021-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-01
          • 2015-05-28
          • 1970-01-01
          • 2020-11-01
          • 2012-07-01
          相关资源
          最近更新 更多