指定pylint应评估的python版本

32 投票
8 回答
20889 浏览
提问于 2025-04-18 02:38

我在使用Sublime Text 3,并通过Pylinter来对我的文件运行pylint

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

我能否轻松地覆盖pylint用来判断应该使用哪个Python版本的机制?理想情况下,我希望有一个内联指令,但我找了很久也没找到相关的信息。

顺便说一下,我是在Windows上编辑的(远程虚拟机是Linux,但这在这里并不重要)。

8 个回答

0

在Sublime Text中,你可以针对每个项目单独设置,方法是通过项目设置来更改pylint的可执行文件。具体步骤是:在菜单中选择“项目”->“编辑项目”,然后添加以下内容:

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

在这里,你可以把3.4替换成你喜欢的版本号。

2

这样做不错,但我觉得最简单的方法就是使用虚拟环境(virtualenv),然后在每个虚拟环境里安装pylint。这样就能使用正确的pylint和Python解释器了。

5

在@sthenault的回答基础上,借鉴了@simon在askubuntu上对一个非常相似问题的解答,解决办法是写一个包装脚本,来调用,并使用合适版本的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结合起来,但这更一般地回答了关于并行版本的问题。我还把上面的解决方案整理成了一个gist

33

你可以试试 python2 -m pylint ...python3 -m pylint ...。这样可以确保你使用的是正确的版本。

25

据我所知,Pylint会根据它运行的Python版本来检查代码的质量,而且无法更改这个设置。

撰写回答