ChatGPT解决这个技术问题 Extra ChatGPT

如何使用 PyCharm 运行 Pylint

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

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

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


P
Peter Mortensen

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

安装 pylint: $ pip install pylint 找到你的 pylint 安装文件夹: $ which pylint # MacOS/Linux /usr/local/bin/pylint # 这只是一个可能的输出 - 检查你的 $ where pylint # Windows %LocalAppData %\Programs\Python\Python36-32\Scripts\pylint.exe # 可能的位置 使用菜单 File → Settings 打开 PyCharm 设置窗口,然后导航到侧边栏中的菜单 Tools → External Tools。 (或搜索“外部工具”)通过单击 + 号并相应地填写字段来设置外部工具。在程序中使用运行 which pylint 时获得的路径。对于其他值,您可以使用图像中的相同值。从菜单 Tools → External Tools → pylint 运行 pylint:在 PyCharm 终端中查看您的输出

有关详细信息,请参阅Pylinting with PyCharm

如果要使用 Pylint 检查整个项目或特定文件或目录,可以右键单击项目根、文件或目录,然后激活外部工具 → pylint,如下所示。

https://i.stack.imgur.com/AVF3A.png


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

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

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

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

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

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

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

https://i.stack.imgur.com/cXBb3.png


如果有人想知道,这些设置也适用于 Windows。
P
Peter Mortensen

您可以试试这个 Pylint PyCharm plugin

https://i.stack.imgur.com/ExItq.png

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

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

https://i.stack.imgur.com/Vi9Ze.png

(只是为了透明起见,我是开发人员。)


这看起来不错。不幸的是,它在启动时抛出异常——它不喜欢安装在 /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
P
Peter Mortensen

我现在使用并推荐我第一次写这个答案时不存在的 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$\:.*

https://i.stack.imgur.com/syZgy.png

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


u
ub_marco

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

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

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

https://i.stack.imgur.com/bQQG5.png


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

首先使用 pip 安装 Pylint:

pip install pylint

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

以下是具有良好设置的 an example


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

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

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

pylint-pycharm

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


P
Peter Mortensen

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

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

确保在虚拟环境中安装 Pylint。注意,确保在创建虚拟环境时没有选择“继承全局站点包”。如果你这样做了,那么 Pylint 最终将成为全球性的,这将不起作用。添加一个新的外部工具并配置。与 lkraider 提供的相比,这略有不同。一方面,我希望它看起来更像正常的 Pylint 输出,因此我的 msg 模板(和输出过滤器)有点不同。各有各的。第二个变化对于基于虚拟环境执行 Pylint 来说更为关键。那是我使用 $PyInterpreterDirectory$ 的程序参数。程序:$PyInterpreterDirectory$/pylint 参数:“--msg-template='{abspath}:{line:5d}:{column}: {msg_id}: {msg} ({symbol})'”--output-format =colorized "$FilePath$" 工作目录:$ProjectFileDir$ 输出过滤器:$FILE_PATH$:\s*$LINE$\:\s*$COLUMN$:

External tool for Pylint