指定 pylint 应评估哪个 python 版本

问题描述 投票:0回答:8

我正在使用 Sublime Text 3 和 Pylinter 在我的文件上运行

pylint

但是,在同一台计算机上,我处理 python 2 和 python 3 项目的文件(代码通过 SSH 在多个远程测试虚拟机之一上执行。我通过 SMB 打开文件来修改文件。这是我的家庭测试实验室,我终于坐下来学习 py3k)。

我可以轻松地覆盖 pylint 用于确定它应该 lint 的 python 版本的机制吗?理想情况下,会有一个内联指令,但我没有找到任何东西。

我正在 Windows 上进行(编辑)(远程虚拟机是 Linux,但这与这里无关),无论它的价值如何。

python python-3.x pylint
8个回答
33
投票

您可以尝试

python2 -m pylint ...
python3 -m pylint ...
。这可确保您使用正确的版本。


24
投票

AFAIK Pylint lints 检测其运行的 Python 版本,并且无法覆盖它。


5
投票

扩展@sthenault的答案,并大量借用@simon的关于askubuntu上的一个非常相似的问题,解决方案是围绕

pylint
编写一个包装器脚本,使用适当版本的Python解释器来执行它。将以下内容放入
mypylint
中某个名为
$PATH
(或其他)的脚本中:

#! /usr/bin/env bash

python_interpreter="python${1}"
pylint_args="-f colorized ${@:2}"
pylint_import=$(cat << PYTHON
import sys
import pkg_resources

__requires__ = "pylint"
sys.exit(
    pkg_resources.load_entry_point("pylint", "console_scripts", "pylint")()
)
PYTHON
)

$python_interpreter -c "$pylint_import" $pylint_args

然后,像这样执行:

mypylint 2|3 PYLINT_ARGS
。例如:

mypylint 2 -f colorized module.py

我不确定如何将其与 sublime-text 联系起来,但它更普遍地回答了

pylint
的并行版本的问题。我还将上述解决方案捆绑到了gist中。


2
投票

这很好,但我认为最简单的事情就是使用 virtualenv,并在每个 virtualenv 中安装 pylint。将使用正确的 pylint 和 python 解释器。


0
投票

您可以通过更改 Project->Edit Project 中的 pylint 可执行文件设置来覆盖 Sublime Text 中的每个项目级别,以包括:

"settings":
{
    "SublimeLinter.linters.pylint.executable": ["py", "-3.4", "-m", "pylint"],
}

用 3.4 代替你喜欢的口味


0
投票

截至 2021 年,pylint 支持

py-version

# Minimum Python version to use for version dependent checks. Will default to
# the version used to run pylint.
py-version=2.7

但是,它似乎并不完美:例如,针对 2.7,它不会警告 3.3 中引入的

yield from
。它确实对某些事情发出警告,例如 f 字符串。


-1
投票

您应该安装两个 pylint,例如 pylint2 和 pylint3,然后编写一个包装脚本来对所需的脚本进行子处理。


-1
投票

您可以安装 pylint3 它将评估 python 3.0,并且 pylint 默认情况下将评估代码为 python 2.7。

© www.soinside.com 2019 - 2024. All rights reserved.