在 Ubuntu 上为 Python3 安装 Pylint

Jer*_*son 34 python

我的理解是Pylint的最新版本(撰写本文时为 1.0.0)支持 Python 3,但我无法让它在 64 位 Ubuntu 13.04 和 Python 3.3 上运行。

我按照PyPi 站点上的安装说明进行操作,Pylint 1.0.0 似乎已成功安装(pylint --version返回 pylint 1.0.0),并且可以使用 Python 2.7 代码,但是当它看到非本地语句等时会报告语法错误。

是什么赋予了?Ubuntu 上是否有 Pylint 的特殊安装说明?

Oli*_*Oli 29

Python 2 和 3 是不同的野兽。如果您将脚本安装到一个版本的站点包中,则不会将其安装到另一个版本中。

我会通过 pip 安装它,但您需要正确版本的 pip。

sudo apt-get install python3-pip
sudo pip-3.3 install pylint
Run Code Online (Sandbox Code Playgroud)

这将替换您的 2.7 版本。我们可以通过检查来确认less $(which pylint)

#!/usr/bin/python3.3
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint==1.0.0','console_scripts','pylint'
__requires__ = 'pylint==1.0.0'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint==1.0.0', 'console_scripts', 'pylint')()
    )
Run Code Online (Sandbox Code Playgroud)

  • 我发现使用较新的版本(从 Python 3.5 等开始。2016 年 11 月)还有一个 pylint3,您可以使用以下命令进行安装:`sudo apt install pylint3`。 (7认同)
  • @Oli 所以如果我为 python 3 安装 pylint 那么默认的 python 2 版本不起作用? (3认同)

sim*_*mon 22

@sayth 对已接受答案的评论吸引了我来到这里——我同时编写了 python 2 和 python 3 脚本,并且我希望能够根据正确的规则集进行检查。使用安装 pylintpip3 install pylint编写一个/usr/local/bin调用 python3 解释器的简短脚本,因此似乎假设要检查的所有文件都是 python 3 脚本。

为了解决这个问题,我现在有以下文件:

~/bin/pylint2

#!/usr/bin/python2
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint','console_scripts','pylint'
__requires__ = 'pylint'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint', 'console_scripts', 'pylint')()
    )
Run Code Online (Sandbox Code Playgroud)

~/bin/pylint3

#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint','console_scripts','pylint'
__requires__ = 'pylint'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint', 'console_scripts', 'pylint')()
    )
Run Code Online (Sandbox Code Playgroud)

然后,因为我喜欢直接从 Geany 的“构建命令”菜单中使用 pylint,而且我无法为 python 2 和 python 3 脚本指定不同的命令,我还有 ~/bin/pylint

#!/bin/bash
if [[ $(head -n 1 "${@: -1}") == *python3* ]]
then
    # python3 file
    pylint3 "$@"
else
    pylint2 "$@"
fi
Run Code Online (Sandbox Code Playgroud)

它通过嗅探shebang来发送正确的版本。

不完美,当然,但功能齐全,也许对其他人有用。


Phi*_*hil 16

从那以后(在提出这个问题之后)pylint 生态系统发生了变化,现在有一个单独的用于 python3 的 pylint。它可以安装:

sudo apt install pylint3

在 Ubuntu 16.04.2 LTS 上为我工作


Sor*_*tad 8

作为另一种在python 2和python 3上运行pylint的方法,注意可以使用python的-m开关来运行当前版本python系统上安装的模块,这样就可以了

$ python2 -m pylint
$ python3 -m pylint
Run Code Online (Sandbox Code Playgroud)

明确选择您想要的那个。如果需要,您可以将它们制作为别名或 shell 脚本。