在 Ubuntu 上安装适用于 Python3 的 Pylint

在 Ubuntu 上安装适用于 Python3 的 Pylint

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

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

怎么回事?Ubuntu 上的 Pylint 有特殊的安装说明吗?

答案1

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

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

sudo apt-get install python3-pip
sudo pip-3.3 install pylint

这会代替您的 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')()
    )

答案2

@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')()
    )

~/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')()
    )

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

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

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

当然,它并不完美,但它实用,并且可能对其他人有用。

答案3

自从提出这个问题以来,pylint 生态系统发生了变化,现在有一个单独的 pylint 用于 python3。它可以通过以下方式安装:

sudo apt install pylint3

在 Ubuntu 16.04.2 LTS 上对我有用

答案4

问题的根源在于 pylint 应该附带 /usr/local/bin/pylint2 和 /usr/local/bin/pylint3 的入口点控制台脚本。这应该被视为一个错误。

以下不是工作;它仍然运行 pylint2:

python3 -m pylint p3file.py

以下是我已经成功使用的内容:

python2 /usr/local/bin/pylint p2file.py
python3 /usr/local/bin/pylint p3file.py

相关内容