指定pylint应为哪个python版本求值

指定pylint应为哪个python版本求值,python,python-3.x,pylint,Python,Python 3.x,Pylint,我正在使用Sublime Text 3对我的文件运行pylint 然而,在同一台机器上,我同时处理python 2和python 3项目的文件(代码通过SSH在几个远程测试虚拟机中的一个上执行。我通过SMB打开文件来修改这些文件。这是我的家庭测试实验室,我终于坐下来学习py3k) 我是否可以轻松地覆盖pylint用于确定它应该lint的python版本的机制?理想情况下,将有一个内联指令,但我没有太多的运气找到任何东西 我正在Windows上(编辑)(远程虚拟机是linux,但这与此无关)进行编

我正在使用Sublime Text 3对我的文件运行
pylint

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

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


我正在Windows上(编辑)(远程虚拟机是linux,但这与此无关)进行编辑,因为这是值得的。

AFAIK Pylint lints用于运行它的Python版本,不可能覆盖它

您应该有两个pylint安装,比如pylint 2和pylint 3,然后编写一个包装器脚本,该脚本将对所需的一个进行子处理。

扩展@sNault的答案,并大量借用@simon's到askubuntu上的一个,解决方案是围绕
pylint
编写一个包装器脚本,用适当版本的Python解释器执行它。将以下内容放入
$PATH
中名为
mypylint
(或其他)的脚本中:

#! /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

我不确定如何将其与崇高的文本联系起来,但它更一般地回答了并行版本的
pylint
。我还将上述解决方案捆绑到一个。

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

您可以安装pylint3,它将对python3.0进行评估,而pylint将对代码进行评估,默认情况下为python2.7

您可以尝试
python2-mpylint…
python3-mpylint…
。这确保您使用正确的版本。

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

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

用3.4代替你喜欢的口味是正确的。这是因为pylint同时依赖于python发行版提供的解析器和ast表示。我没有意识到它与python解析器的结合有多深。我假设它是在内部解释代码,而不是在运行本地python解释器生成的AST上进行操作。我不确定这是否完全正确。我正在运行Python2.7.3,但是pylint报告了
警告(W0622,重新定义了内置的,)重新定义了内置的“字节”
bytes()
不是python 2中内置的。谢谢。我有virtualenv并使用了pylint,但它没有安装在我的virtualenv中,所以pylint使用了全局的,这导致了问题。很好,我认为这是最好的答案。当然,您必须在两个python安装上都安装pylint。(
pip2 install pylint
pip3 install pylint
)此方法会将当前目录添加到路径中,因此请确保它不包含名为
pylint.py的文件,也不与任何间接导入(如
astroid
(对于您自己的代码来说,这可能是一个安全的假设,但如果试图自动分析第三方回购协议,则是危险的)在我的windows计算机上,命令改为
[“C:\\python27\\python.exe”、“-m”、“pylint”]
,它使用文本Python可执行路径->可以为您感兴趣的特定Python.exe使用文本路径…例如,virtualenv的文本路径
"settings":
{
    "SublimeLinter.linters.pylint.executable": ["py", "-3.4", "-m", "pylint"],
}